<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xml:lang="en" xml:base="http://realitydrivendeveloper.com/wp-atom.php">
	<title type="text">Software development in the real world</title>
	<subtitle type="text" />

	<updated>2010-05-15T02:44:53Z</updated>
	<generator uri="http://wordpress.org/" version="2.9.1">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com" />
	<id>http://realitydrivendeveloper.com/feed/atom/</id>
	

			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SoftwareDevelopmentInTheRealWorld_posts" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="softwaredevelopmentintherealworld_posts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[How to run mplayer video remotely]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2010/05/how-to-run-mplayer-video-remotely/" />
		<id>http://realitydrivendeveloper.com/?p=168</id>
		<updated>2010-05-15T02:44:53Z</updated>
		<published>2010-05-15T02:44:53Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="Uncategorized" /><category scheme="http://realitydrivendeveloper.com" term="mplayer" /><category scheme="http://realitydrivendeveloper.com" term="shell" />		<summary type="html"><![CDATA[
]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2010/05/how-to-run-mplayer-video-remotely/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/meTd-yqEEtuDNzNL1SU90XLRcwY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/meTd-yqEEtuDNzNL1SU90XLRcwY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/meTd-yqEEtuDNzNL1SU90XLRcwY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/meTd-yqEEtuDNzNL1SU90XLRcwY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;script src="http://gist.github.com/401955.js?file=gistfile1.sh"&gt;&lt;/script&gt;&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2010/05/how-to-run-mplayer-video-remotely/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2010/05/how-to-run-mplayer-video-remotely/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[Use Godaddy SMTP in your Rails code]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2010/04/use-godaddy-smtp-in-your-rails-code/" />
		<id>http://realitydrivendeveloper.com/?p=166</id>
		<updated>2010-04-30T06:26:58Z</updated>
		<published>2010-04-30T06:26:58Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="Uncategorized" /><category scheme="http://realitydrivendeveloper.com" term="godaddy" /><category scheme="http://realitydrivendeveloper.com" term="ruby on rails" /><category scheme="http://realitydrivendeveloper.com" term="smtp" />		<summary type="html"><![CDATA[
]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2010/04/use-godaddy-smtp-in-your-rails-code/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZfZLY-WCEMXprJQCFF3vux6ZovA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZfZLY-WCEMXprJQCFF3vux6ZovA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZfZLY-WCEMXprJQCFF3vux6ZovA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZfZLY-WCEMXprJQCFF3vux6ZovA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;script src="http://gist.github.com/384831.js"&gt;&lt;/script&gt;&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2010/04/use-godaddy-smtp-in-your-rails-code/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2010/04/use-godaddy-smtp-in-your-rails-code/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[Cross-browser jquery snippet for catching ESC button keypress]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2010/04/cross-browser-jquery-snippet-for-catching-esc-button-keypress/" />
		<id>http://realitydrivendeveloper.com/?p=163</id>
		<updated>2010-04-18T13:35:20Z</updated>
		<published>2010-04-18T13:34:57Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="Uncategorized" /><category scheme="http://realitydrivendeveloper.com" term="jquery ria" />		<summary type="html"><![CDATA[
]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2010/04/cross-browser-jquery-snippet-for-catching-esc-button-keypress/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CmDTusI1PRVwF41x-DITritDgf4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CmDTusI1PRVwF41x-DITritDgf4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CmDTusI1PRVwF41x-DITritDgf4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CmDTusI1PRVwF41x-DITritDgf4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;script src='http://pastie.org/925654.js'&gt;&lt;/script&gt;&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2010/04/cross-browser-jquery-snippet-for-catching-esc-button-keypress/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2010/04/cross-browser-jquery-snippet-for-catching-esc-button-keypress/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[Simple Ruby hearthbeat script with SMTP notifications]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2010/04/simple-ruby-hearthbeat-script-with-smtp-notifications/" />
		<id>http://realitydrivendeveloper.com/?p=160</id>
		<updated>2010-04-17T17:59:59Z</updated>
		<published>2010-04-17T17:59:59Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="Uncategorized" /><category scheme="http://realitydrivendeveloper.com" term="high availability" /><category scheme="http://realitydrivendeveloper.com" term="monitoring" /><category scheme="http://realitydrivendeveloper.com" term="ruby" />		<summary type="html"><![CDATA[
I like this script from &#8220;Deploying Rails Applications&#8221; by the &#8220;The Pragmatic Programmers&#8221; series because of its simplicity.
I&#8217;m gonna use it in one high-available project to sleep better at night.
]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2010/04/simple-ruby-hearthbeat-script-with-smtp-notifications/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LsJyUv5111Led7kjj0xCca0DVYM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LsJyUv5111Led7kjj0xCca0DVYM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LsJyUv5111Led7kjj0xCca0DVYM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LsJyUv5111Led7kjj0xCca0DVYM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;script src='http://pastie.org/924787.js'&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;I like this script from &amp;#8220;Deploying Rails Applications&amp;#8221; by the &amp;#8220;The Pragmatic Programmers&amp;#8221; series because of its simplicity.&lt;br /&gt;
I&amp;#8217;m gonna use it in one high-available project to sleep better at night.&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2010/04/simple-ruby-hearthbeat-script-with-smtp-notifications/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2010/04/simple-ruby-hearthbeat-script-with-smtp-notifications/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[How to fetch .property file content in bash script]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2010/03/how-to-fetch-property-file-content-in-bash-script/" />
		<id>http://realitydrivendeveloper.com/?p=153</id>
		<updated>2010-03-15T00:52:15Z</updated>
		<published>2010-03-15T00:47:49Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="Uncategorized" /><category scheme="http://realitydrivendeveloper.com" term="apache ant" /><category scheme="http://realitydrivendeveloper.com" term="bash" /><category scheme="http://realitydrivendeveloper.com" term="property" /><category scheme="http://realitydrivendeveloper.com" term="shell" /><category scheme="http://realitydrivendeveloper.com" term="unix" />		<summary type="html"><![CDATA[Recently I had a task &#8211; implementation of automated deployment procedure to dev/stagin environment.
1) Update server&#8217;s source  code to the latest version available
2) Create/recreate DB(if necessary) with certain db access parameters.
3) Implement all the latest SQL delta schema updates(via LiquiBase).
My main idea was to reduce duplicity in config management as much as possible.
So I [...]]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2010/03/how-to-fetch-property-file-content-in-bash-script/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Cea5snAZXFP4Kegfxx2FtpPMtrQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cea5snAZXFP4Kegfxx2FtpPMtrQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Cea5snAZXFP4Kegfxx2FtpPMtrQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cea5snAZXFP4Kegfxx2FtpPMtrQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Recently I had a task &amp;#8211; implementation of automated deployment procedure to dev/stagin environment.&lt;/p&gt;
&lt;p&gt;1) Update server&amp;#8217;s source  code to the latest version available&lt;br /&gt;
2) Create/recreate DB(if necessary) with certain db access parameters.&lt;br /&gt;
3) Implement all the latest SQL delta schema updates(via LiquiBase).&lt;/p&gt;
&lt;p&gt;My main idea was to reduce duplicity in config management as much as possible.&lt;br /&gt;
So I decided to store all db config data in one property file.&lt;/p&gt;
&lt;div class="codesnip-container" &gt;
&lt;div class="codesnip"&gt;nikita@laptop:/var/www/fooproject&lt;span class="co1"&gt;# cat build.properties&lt;/span&gt;&lt;br /&gt;
database.port = &lt;span class="nu0"&gt;3306&lt;/span&gt;&lt;br /&gt;
database.name = fooproject_devel&lt;br /&gt;
database.username = foo_username&lt;br /&gt;
database.password = foo_password&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This is how I pass parameters from property file to my custom bash script:&lt;/p&gt;
&lt;div class="codesnip-container" &gt;
&lt;div class="codesnip"&gt;nikita@laptop:/var/www/fooproject# cat build.xml&lt;/p&gt;
&lt;p&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;project&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;Foo&amp;#8221;&lt;/span&gt; &lt;span class="re0"&gt;default&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;build&amp;#8221;&lt;/span&gt; &lt;span class="re0"&gt;basedir&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;.&amp;#8221;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;property&lt;/span&gt; &lt;span class="re0"&gt;file&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;build.properties&amp;#8221;&lt;/span&gt;&lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;target&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;recreate-db&amp;#8221;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;exec&lt;/span&gt; &lt;span class="re0"&gt;executable&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;expect&amp;#8221;&lt;/span&gt; &lt;span class="re0"&gt;dir&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;${basedir}&amp;#8221;&lt;/span&gt; &lt;span class="re0"&gt;failonerror&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#8220;on&amp;#8221;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;arg&lt;/span&gt; line =&lt;span class="st0"&gt;&amp;#8220;recreate-db.sh&amp;#8221;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;arg&lt;/span&gt; line =&lt;span class="st0"&gt;&amp;#8220;${database.username}&amp;#8221;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;arg&lt;/span&gt; line =&lt;span class="st0"&gt;&amp;#8220;${database.password}&amp;#8221;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;arg&lt;/span&gt; line =&lt;span class="st0"&gt;&amp;#8220;${database.name}&amp;#8221;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/exec&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/target&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/project&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="codesnip-container" &gt;
&lt;div class="codesnip"&gt;nikita@laptop:/var/www/fooproject&lt;span class="co1"&gt;# cat recreate-db.sh &lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;#!/usr/bin/expect&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw3"&gt;set&lt;/span&gt; username &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;lindex &lt;span class="re1"&gt;$argv&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw3"&gt;set&lt;/span&gt; password &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;lindex &lt;span class="re1"&gt;$argv&lt;/span&gt; &lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw3"&gt;set&lt;/span&gt; database &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;lindex &lt;span class="re1"&gt;$argv&lt;/span&gt; &lt;span class="nu0"&gt;2&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;That&amp;#8217;s it.&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2010/03/how-to-fetch-property-file-content-in-bash-script/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2010/03/how-to-fetch-property-file-content-in-bash-script/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[WorldTimeEngine: How to show all times in user&#8217;s local time zone]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2009/08/worldtimeengine-how-to-show-all-times-in-users-local-time-zone/" />
		<id>http://realitydrivendeveloper.com/?p=102</id>
		<updated>2009-08-15T07:34:28Z</updated>
		<published>2009-08-15T07:24:24Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="development" /><category scheme="http://realitydrivendeveloper.com" term="API" /><category scheme="http://realitydrivendeveloper.com" term="worldtimeengine" />		<summary type="html"><![CDATA[When I visit some site and it shows me that some action performed at some time &#8211; it confuses me a little, because I don&#8217;t know in which time zone is this time.
Sure, you can spend some time to read about one&#8217;s time zone settings and rules, BUT Don&#8217;t make me think. Every website uses [...]]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2009/08/worldtimeengine-how-to-show-all-times-in-users-local-time-zone/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ywmPj8Awl7J7_CP64dormiu-rmA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ywmPj8Awl7J7_CP64dormiu-rmA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ywmPj8Awl7J7_CP64dormiu-rmA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ywmPj8Awl7J7_CP64dormiu-rmA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;When I visit some site and it shows me that some action performed at some time &amp;#8211; it confuses me a little, because I don&amp;#8217;t know in which time zone is this time.&lt;br /&gt;
Sure, you can spend some time to read about one&amp;#8217;s time zone settings and rules, BUT &lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Don't_Make_Me_Think"&gt;Don&amp;#8217;t make me think&lt;/a&gt;&lt;/strong&gt;. Every website uses his own rules for time setting &amp;#8211; some uses &lt;strong&gt;GMT zone&lt;/strong&gt;, some says something like: London or New York or Moscow time.&lt;/p&gt;
&lt;p&gt;I, as a potential user, will be much more satisfied if I would see the only one explanation:&lt;br /&gt;
&lt;blockquote&gt;All dates and times are in your local time zone settings.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Sounds easy, yet powerful. And on the other hand &amp;#8211; hard to implement such flexibility.. But it&amp;#8217;s really not.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-102"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Recently, I was working on some site, where exact clear time was essential. It was scheduled message sending feature. We had users from many countries in great variety of time zones.&lt;br /&gt;
My first idea about how this feature can be implemented &amp;#8211; was in involvement of time zones select option, where user can choose his time zone to say to us his local time. But this isn&amp;#8217;t very reliable because in one particular GMT time zone many can be located lots of countries with their own time setting rules.&lt;/p&gt;
&lt;p&gt;Every single country decides every year when DST transitions will occur.  There can be any number of offset transitions during the year: 0, 1, 2, 3, 4 etc. There can be offset transitions that aren&amp;#8217;t DST transitions.  For example, in 1946 Hawaii changed its standard time offset from -10.5 hours to -10 hours&amp;#8211;and this had nothing to do with DST.  &lt;/p&gt;
&lt;p&gt;So we couldn&amp;#8217;t count neither on GMT zone to be sure for 100%, nor for country&amp;#8217;s capital GMT offset(Russia, USA, Canada and so on).&lt;/p&gt;
&lt;p&gt;The answer was very simple and beautiful.&lt;/p&gt;
&lt;p&gt;There is &lt;b&gt;&lt;a href="http://worldtimeengine.com"&gt;WorldTimeEngine&lt;/a&gt;&lt;/b&gt; service, which provides a simple &lt;b&gt;API&lt;/b&gt; for retrieving user&amp;#8217;s local time based on his IP address. It costs not so much, and this information can be cached for quite a long period of time.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve written some simple class, which calculates offset between our server&amp;#8217;s time(London, GMT+0) and user&amp;#8217;s local time, then it saves this offset to the IP address &amp;#8211; Offset dictionary stored in database. So, when we show some time-related information, we implement this offset for every single timestamp &amp;#8211; and user always see all info in his local time settings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Very useful.&lt;/strong&gt;&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2009/08/worldtimeengine-how-to-show-all-times-in-users-local-time-zone/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2009/08/worldtimeengine-how-to-show-all-times-in-users-local-time-zone/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[Memory Palace method example: Strategy pattern]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2009/03/memory-palace-method-example-strategy-pattern/" />
		<id>http://realitydrivendeveloper.com/?p=47</id>
		<updated>2009-07-30T13:17:39Z</updated>
		<published>2009-03-05T17:41:29Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="Object oriented programming" /><category scheme="http://realitydrivendeveloper.com" term="design patterns" /><category scheme="http://realitydrivendeveloper.com" term="GoF" /><category scheme="http://realitydrivendeveloper.com" term="memory palace" /><category scheme="http://realitydrivendeveloper.com" term="mnemonics" /><category scheme="http://realitydrivendeveloper.com" term="strategy pattern" />		<summary type="html"><![CDATA[This post is a sequel of previous How to start using Design Patterns post, describing the Memory Palace memorization method. I recommend you to read it before starting to read this post.
For example, I can use my sitting room as a basis for the remembering path. In this room I have the following objects:
Table, big [...]]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2009/03/memory-palace-method-example-strategy-pattern/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FadipFYpEyNLiA4nGmpA971DA_s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FadipFYpEyNLiA4nGmpA971DA_s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FadipFYpEyNLiA4nGmpA971DA_s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FadipFYpEyNLiA4nGmpA971DA_s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This post is a sequel of previous &lt;a href="http://realitydrivendeveloper.com/2009/02/how-to-start-using-design-patterns/"&gt;How to start using Design Patterns&lt;/a&gt; post, describing the Memory Palace memorization method. I recommend you to read &lt;a href="http://realitydrivendeveloper.com/2009/02/how-to-start-using-design-patterns/"&gt;it&lt;/a&gt; before starting to read this post.&lt;/p&gt;
&lt;p&gt;For example, I can use my sitting room as a basis for the remembering path. In this room I have the following objects:&lt;br /&gt;
Table, big bright window, lamp, sofa, picture on the wall, small bookcase, CD rack, telephone, television, DVD player, chair, mirror, black and white photographs, etc.&lt;/p&gt;
&lt;p&gt;I want to put all the units required for remembering the StrategyContext implementation in that room. I&amp;#8217;ll start from window and will move to the door out of the room.&lt;/p&gt;
&lt;p&gt;When I hear the word &amp;#8220;strategy&amp;#8221;, the first image comes to my mind is an ancient roman warrior with armors. &amp;#8220;Context&amp;#8221; associates with Jacuzzi for me(something that surrounds you). So I &amp;#8220;see&amp;#8221; the roman warrior sitting in the Jacuzzi(pay attention at bubbles and moist air in the room).&lt;/p&gt;
&lt;p&gt;Here is an example implementation of the GoF Strategy pattern, main concept of which we want to remember:&lt;br /&gt;
I&amp;#8217;ve taken it at &lt;a href="http://sourcemaking.com/design_patterns/strategy/php"&gt;Strategy PHP example&lt;/a&gt; from &lt;a href="http://sourcemaking.com/design_patterns/"&gt;software pattern catalog&lt;/a&gt;:&lt;br /&gt;
&lt;span id="more-47"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="codesnip-container" &gt;
&lt;div class="codesnip"&gt;&lt;span class="kw2"&gt;class&lt;/span&gt; StrategyContext &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;private &lt;span class="re0"&gt;$strategy&lt;/span&gt; = &lt;span class="kw2"&gt;NULL&lt;/span&gt;;&lt;/p&gt;
&lt;p&gt;&lt;span class="co1"&gt;//bookList is not instantiated at construct time&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;public &lt;span class="kw2"&gt;function&lt;/span&gt; __construct&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$strategy_ind_id&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw1"&gt;switch&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$strategy_ind_id&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;case&lt;/span&gt; &lt;span class="st0"&gt;&amp;#8220;C&amp;#8221;&lt;/span&gt;:&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;strategy = &lt;span class="kw2"&gt;new&lt;/span&gt; StrategyCaps&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kw1"&gt;break&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kw1"&gt;case&lt;/span&gt; &lt;span class="st0"&gt;&amp;#8220;E&amp;#8221;&lt;/span&gt;:&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;strategy = &lt;span class="kw2"&gt;new&lt;/span&gt; StrategyExclaim&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kw1"&gt;break&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kw1"&gt;case&lt;/span&gt; &lt;span class="st0"&gt;&amp;#8220;S&amp;#8221;&lt;/span&gt;:&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;strategy = &lt;span class="kw2"&gt;new&lt;/span&gt; StrategyStars&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kw1"&gt;break&lt;/span&gt;;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;public &lt;span class="kw2"&gt;function&lt;/span&gt; showBookTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$book&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;strategy-&amp;amp;gt;showTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$book&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/p&gt;
&lt;p&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;interface StrategyInterface &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
public &lt;span class="kw2"&gt;function&lt;/span&gt; showTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$book_in&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw2"&gt;class&lt;/span&gt; StrategyCaps implements StrategyInterface &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
public &lt;span class="kw2"&gt;function&lt;/span&gt; showTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$book_in&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$title&lt;/span&gt; = &lt;span class="re0"&gt;$book_in&lt;/span&gt;-&amp;amp;gt;getTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;titleCount++;&lt;br /&gt;
&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;a href="http://www.php.net/strtoupper"&gt;&lt;span class="kw3"&gt;strtoupper&lt;/span&gt;&lt;/a&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$title&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw2"&gt;class&lt;/span&gt; StrategyExclaim implements StrategyInterface &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
public &lt;span class="kw2"&gt;function&lt;/span&gt; showTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$book_in&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$title&lt;/span&gt; = &lt;span class="re0"&gt;$book_in&lt;/span&gt;-&amp;amp;gt;getTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;titleCount++;&lt;br /&gt;
&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;a href="http://www.php.net/str_replace"&gt;&lt;span class="kw3"&gt;Str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;#8216; &amp;#8216;&lt;/span&gt;,&lt;span class="st0"&gt;&amp;#8216;!&amp;#8217;&lt;/span&gt;,&lt;span class="re0"&gt;$title&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw2"&gt;class&lt;/span&gt; StrategyStars implements StrategyInterface &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
public &lt;span class="kw2"&gt;function&lt;/span&gt; showTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$book_in&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$title&lt;/span&gt; = &lt;span class="re0"&gt;$book_in&lt;/span&gt;-&amp;amp;gt;getTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;titleCount++;&lt;br /&gt;
&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;a href="http://www.php.net/str_replace"&gt;&lt;span class="kw3"&gt;Str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;#8216; &amp;#8216;&lt;/span&gt;,&lt;span class="st0"&gt;&amp;#8216;*&amp;#8217;&lt;/span&gt;,&lt;span class="re0"&gt;$title&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw2"&gt;class&lt;/span&gt; Book &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
private &lt;span class="re0"&gt;$author&lt;/span&gt;;&lt;br /&gt;
private &lt;span class="re0"&gt;$title&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kw2"&gt;function&lt;/span&gt; __construct&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$title_in&lt;/span&gt;, &lt;span class="re0"&gt;$author_in&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;author = &lt;span class="re0"&gt;$author_in&lt;/span&gt;;&lt;br /&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;title&amp;nbsp; = &lt;span class="re0"&gt;$title_in&lt;/span&gt;;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw2"&gt;function&lt;/span&gt; getAuthor&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;author;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw2"&gt;function&lt;/span&gt; getTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;title;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw2"&gt;function&lt;/span&gt; getAuthorAndTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;getTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; . &lt;span class="st0"&gt;&amp;#8216; by &amp;#8216;&lt;/span&gt; . &lt;span class="re0"&gt;$this&lt;/span&gt;-&amp;amp;gt;getAuthor&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="re0"&gt;$book&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; Book&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;#8216;PHP for Cats&amp;#8217;&lt;/span&gt;,&lt;span class="st0"&gt;&amp;#8216;Larry Truett&amp;#8217;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/p&gt;
&lt;p&gt;&lt;span class="re0"&gt;$strategyContextC&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; StrategyContext&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;#8216;C&amp;#8217;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span class="kw3"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span class="re0"&gt;$strategyContextC&lt;/span&gt;-&amp;amp;gt;showBookTitle&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$book&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/p&gt;
&lt;p&gt;?&amp;amp;gt;&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;After I see the robot made from LEGO constructor, which holds the &lt;strong&gt;E&lt;/strong&gt; letter in its manipulator-hand at the picture at the wall.&lt;/p&gt;
&lt;p&gt;After that I see the robot&amp;#8217;s manipulator is getting out of picture and moves the letter &lt;strong&gt;E&lt;/strong&gt; to the opposite corner of the room, while the roman warrior has got out of the Jacuzzi and moved to those part of room. Manipulator gives this &lt;strong&gt;E&lt;/strong&gt; letter, and while it falls down to the warrior&amp;#8217;s hands it transforms into the exclamation mark(assign the strategy property an StrategyExclamation implementation &amp;#8211; $this-&amp;gt;strategy = new StrategyExclaim())&lt;/p&gt;
&lt;p&gt;Now let&amp;#8217;s move to particular StrategyExclaim implementation:&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll use the kitchen for that class. I see the warrior standing near the table, holding the knife. He wants to cut the tasty cake in form of exclamation mark, lying on the table(StrategyExclaim).&lt;/p&gt;
&lt;p&gt;Near the sink I the the ostsilograf with right sine function on them. At the end of room, I see the black &amp;#8220;magic&amp;#8221; curtains, like those in circus. And after that I see the top of the curtains lowering(опускаются), until we can see the book&amp;#8217;s, standing behind the curtains, top part  with its title(function showTitle($book));&lt;/p&gt;
&lt;p&gt;Now, If I&amp;#8217;ll walk this path I&amp;#8217;ll can remind this pattern implementation. It is important, to now only remember every line of implementation, but more of core concepts(main parts), which will help you to remind the implementation.&lt;/p&gt;
&lt;p&gt;Because remembering the source code is not a linear information, you&amp;#8217;ll have to be creative and find the way of grouping the concepts and make a cross connections between them.&lt;/p&gt;
&lt;p&gt;It is strongly recommended for you, to make your own &amp;#8220;story&amp;#8221;, because your own feelings and imagination images means much more to you, than other peoples perception, hence are remembered faster and stronger.&lt;/p&gt;
&lt;p&gt;Our main purpose is not just in fast remembering the pattern, but in stay it with us for a quite long period of time. After first learning I reminisce the remembered information in my imagination, without looking at the paper or laptop&lt;/p&gt;
&lt;p&gt;1) after 15 minutes&lt;/p&gt;
&lt;p&gt;2) after an hour&lt;/p&gt;
&lt;p&gt;3) after about 6 hours&lt;/p&gt;
&lt;p&gt;4) on the next day&lt;/p&gt;
&lt;p&gt;5) .. week&lt;/p&gt;
&lt;p&gt;After that, if you want this information to stay in your &lt;a href="http://en.wikipedia.org/wiki/Long-term_memory"&gt;long-term memory&lt;/a&gt; all you have to do is to reminisce this information on a monthly basis. It will be enough.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m using the technique to memorizing different types of information: UNIX shell commands, foreign language words, framework constructs, etc.&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2009/03/memory-palace-method-example-strategy-pattern/#comments" thr:count="15" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2009/03/memory-palace-method-example-strategy-pattern/feed/atom/" thr:count="15" />
		<thr:total>15</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[stackoverflow]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2009/03/stackoverflow/" />
		<id>http://realitydrivendeveloper.com/?p=79</id>
		<updated>2009-03-05T18:32:16Z</updated>
		<published>2009-03-05T15:50:25Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="communication" />		<summary type="html"><![CDATA[Finally have decided to register at stackoverflow.
I like to talk on software development related topics, asking question and provide some recommendations to other developers. Sometimes I face different unique challenges, which is not described in the software dev books &#8211; in that cases all you can do is to rely on your own experience.
One head [...]]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2009/03/stackoverflow/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ag-5vQk_Wo6gj9sTRUTW2-vc-Vw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ag-5vQk_Wo6gj9sTRUTW2-vc-Vw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ag-5vQk_Wo6gj9sTRUTW2-vc-Vw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ag-5vQk_Wo6gj9sTRUTW2-vc-Vw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Finally have decided to register at &lt;a href="http://stackoverflow.com/"&gt;stackoverflow&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I like to talk on software development related topics, asking question and provide some recommendations to other developers. Sometimes I face different unique challenges, which is not described in the software dev books &amp;#8211; in that cases all you can do is to rely on your own experience.&lt;/p&gt;
&lt;p&gt;One head is good. No, not like that &lt;img src='http://realitydrivendeveloper.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt;  One good head is good, but a community is much better. In that way our experience summarize in solving particular problems, and answering particular questions.&lt;/p&gt;
&lt;p&gt;I like the community it has, type of questions and discussions manner.&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2009/03/stackoverflow/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2009/03/stackoverflow/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[How to start using Design Patterns]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2009/02/how-to-start-using-design-patterns/" />
		<id>http://realitydrivendeveloper.com/?p=67</id>
		<updated>2009-02-28T07:00:01Z</updated>
		<published>2009-02-28T06:58:16Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="Object oriented programming" /><category scheme="http://realitydrivendeveloper.com" term="design patterns" /><category scheme="http://realitydrivendeveloper.com" term="ood" /><category scheme="http://realitydrivendeveloper.com" term="oop" />		<summary type="html"><![CDATA[I remember myself procrastinating in using of Design Pattern in production code, after reading the information about the GoF patterns.
On the paper everything looked very easy and understandable. But after you might fall in trap of fear of using this knowledge in production code, because:

You have a very limited time dedicated for the task. So [...]]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2009/02/how-to-start-using-design-patterns/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zw7ZIJtGyYVRK1PKi_MomJ9Spjw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zw7ZIJtGyYVRK1PKi_MomJ9Spjw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zw7ZIJtGyYVRK1PKi_MomJ9Spjw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zw7ZIJtGyYVRK1PKi_MomJ9Spjw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I remember myself procrastinating in using of &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)"&gt;Design Pattern&lt;/a&gt; in production code, after reading the information about the &lt;a href="http://en.wikipedia.org/wiki/Gang_of_Four"&gt;GoF&lt;/a&gt; patterns.&lt;/p&gt;
&lt;p&gt;On the paper everything looked very easy and understandable. But after you might fall in trap of fear of using this knowledge in production code, because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have a very limited time dedicated for the task. So you can&amp;#8217;t find the time to do the things &amp;#8220;in right way&amp;#8221;&lt;/li&gt;
&lt;li&gt;You haven&amp;#8217;t enough experience of some particular Design pattern, so you don&amp;#8217;t know how to exactly implement in real problem solving. So you spend more time and get out of time scope for task and schedule. So you decide to refuse &amp;#8220;the hard right way&amp;#8221;, and implement an easy and dirty &amp;#8220;temporary&amp;#8221; solution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you refused to implement the pattern, you haven&amp;#8217;t improve your experience with this pattern. It is an infinity loop: you can&amp;#8217;t implement because you don&amp;#8217;t have a required experience. Time passes, and you will have the exact same problem in future, and the initial conditions(level of experience with particular pattern) are still low.&lt;/p&gt;
&lt;p&gt;I was in this loop for a couple months. And after I recognised this behaviour habit, I&amp;#8217;ve asked for help more my more experienced co-workers. The advice was simple and easy:&lt;/p&gt;
&lt;p&gt;You can&amp;#8217;t succeed without failure. If you want to become more experienced in Object Oriented design and Design patterns, you have to have a will in this trend, and still moving nonetheless the periodic temporary failures.&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2009/02/how-to-start-using-design-patterns/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2009/02/how-to-start-using-design-patterns/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
		<entry>
		<author>
			<name>admin</name>
						<uri>http://</uri>
					</author>
		<title type="html"><![CDATA[How to remember software design patterns]]></title>
		<link rel="alternate" type="text/html" href="http://realitydrivendeveloper.com/2009/01/how-to-remember-software-design-patterns/" />
		<id>http://realitydrivendeveloper.com/?p=42</id>
		<updated>2009-03-05T17:51:12Z</updated>
		<published>2009-01-28T17:04:24Z</published>
		<category scheme="http://realitydrivendeveloper.com" term="memory" /><category scheme="http://realitydrivendeveloper.com" term="design patterns" /><category scheme="http://realitydrivendeveloper.com" term="GoF" /><category scheme="http://realitydrivendeveloper.com" term="learning" /><category scheme="http://realitydrivendeveloper.com" term="mnemonics" />		<summary type="html"><![CDATA[Who likes to learn from the scratch the same issues over and over again. Assume, that nobody.
But sometimes we have to do so with design patterns, because that is not the case we have a close contact with every of 23 classic software design patterns.
I don&#8217;t remember, who wrote that:&#8221;we uses implementation patterns every hour, [...]]]></summary>
		<content type="html" xml:base="http://realitydrivendeveloper.com/2009/01/how-to-remember-software-design-patterns/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DfQdm8Ona6YWdhsVfzW0cNP4TmE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DfQdm8Ona6YWdhsVfzW0cNP4TmE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DfQdm8Ona6YWdhsVfzW0cNP4TmE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DfQdm8Ona6YWdhsVfzW0cNP4TmE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Who likes to learn from the scratch the same issues over and over again. Assume, that nobody.&lt;/p&gt;
&lt;p&gt;But sometimes we have to do so with &lt;strong&gt;design patterns&lt;/strong&gt;, because that is not the case we have a close contact with every of 23 classic software design patterns.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t remember, who wrote that:&amp;#8221;we uses implementation patterns every hour, we uses design patterns much rarely, and we use architectural patterns mostly at the start of the project&amp;#8221;.&lt;/p&gt;
&lt;p&gt;And when we don&amp;#8217;t use some of our knowledge for quite a long period of time, we actually loose this knowledge, and will have to learn it again, when we need it.&lt;/p&gt;
&lt;p&gt;I think, that design patterns are worth remembering, because it is not the case, when you&amp;#8217;ll have to forget it later, because something new will appear. Software design patterns are core solutions for constantly appearing daily design tasks. And mostly, it doesn&amp;#8217;t attached to particular programming language, or framework(but every implementation has its own differences).&lt;/p&gt;
&lt;p&gt;&lt;span id="more-42"&gt;&lt;/span&gt;So, here I want to tell you about, the method for memorizing the lists of structured data.&lt;/p&gt;
&lt;p&gt;It is more like intro-to-method post. In next posts, I&amp;#8217;ll try to explain with examples, how you can learn the implementations of Software design patterns.&lt;/p&gt;
&lt;p&gt;So,&lt;strong&gt; Memory palace(method of loci/journey) method&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;To use this technique, remember a room that you know good. There are many objects in room. You have to choose the path(sequence) of those objects(no matter in what direction, but I have to know the &amp;#8220;path&amp;#8221; well) and know that sequence.&lt;/p&gt;
&lt;p&gt;After that you have to associate images representing the information you want to remember with the objects on the path, &lt;strong&gt;one&lt;/strong&gt;-by-&lt;strong&gt;one&lt;/strong&gt;.&lt;/p&gt;
&lt;p class="bodytext"&gt;You may not limit yourself by just one room, you can go from one room to another, go out to street and so on as you like. The most important is that you have to know that path(significant point, associated with information unit you will associate with), and can walk it in your mind back and force.&lt;/p&gt;
&lt;p class="bodytext"&gt;To reminiscent all the information you have remembered, all you have to do is just to walk the path and &amp;#8220;look&amp;#8221; at those significant points, referenced somehow with information units.&lt;/p&gt;
&lt;p&gt;I also strongly recommend you to get familiar with wikipedia&amp;#8217;s article on &amp;#8220;&lt;a href="http://en.wikipedia.org/wiki/Method_of_loci"&gt;Method of loci&lt;/a&gt;&amp;#8220;.&lt;/p&gt;
&lt;p&gt;Here is the post describing the using of this method for &lt;a href="http://realitydrivendeveloper.com/2009/03/memory-palace-method-example-strategy-pattern/"&gt;Strategy Design Pattern memorization&lt;/a&gt;.&lt;/p&gt;
</content>
		<link rel="replies" type="text/html" href="http://realitydrivendeveloper.com/2009/01/how-to-remember-software-design-patterns/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://realitydrivendeveloper.com/2009/01/how-to-remember-software-design-patterns/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
	</feed>
