<?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:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEYDQnw5eSp7ImA9WhVbEkg.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126</id><updated>2012-05-29T03:42:53.221+03:00</updated><category term="Business" /><category term="Personal" /><category term="Productivity" /><category term="Analytics" /><category term="MySQL" /><category term="Copyright" /><category term="Performance" /><category term="Mobile web" /><category term="SEO" /><category term="Linux" /><category term="Review" /><category term="Mac" /><category term="UX" /><category term="Tools" /><category term="Magento" /><category term="Spam" /><category term="Security" /><category term="Buzz" /><category term="TYPO3" /><category term="Apple" /><category term="Putin" /><category term="Programming" /><category term="ExtJS" /><title>Dmitry Dulepov</title><subtitle type="html">Being smart and efficient. Building life for the greater good.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.dmitry-dulepov.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>187</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/dmitry-dulepov" /><feedburner:info uri="dmitry-dulepov" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUQGRnw-eip7ImA9WhVXEkw.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-5943686523770218562</id><published>2012-04-12T10:55:00.000+03:00</published><updated>2012-04-12T10:55:27.252+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-12T10:55:27.252+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>When not to use typoLink</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/llXkXx2DgMRn44FevLJiAPplPAA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/llXkXx2DgMRn44FevLJiAPplPAA/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/llXkXx2DgMRn44FevLJiAPplPAA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/llXkXx2DgMRn44FevLJiAPplPAA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
For a long time I tell everybody to use typoLink to create links inside TYPO3.&lt;br /&gt;
&lt;br /&gt;
A “go”:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$url = $this-&amp;gt;cObj-&amp;gt;typoLink_URL(array(
    'parameter' =&amp;gt; $GLOBALS['TSFE']-&amp;gt;id
));&lt;/pre&gt;
&lt;br /&gt;
A “no go”:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

&lt;/pre&gt;
But there is one case when you absolutely must not use typoLink to create the URL. It is when the URL points to the eID script. Why? Because there is no resolving of the speaking URL inside eID anyway. So it is a complete waste of time and memory to have something like &lt;code&gt;/path/to/my/news/page/news/how-i-bought-a-car.html?eID=tx_myext_eid.&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Just do it like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$url = t3lib_div::locationHeaderUrl('index.php?eID=tx_myext_eid').&lt;/pre&gt;
&lt;br /&gt;
That's the right way.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-5943686523770218562?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/2lZD7h9CtGg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/5943686523770218562/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/04/when-not-to-use-typolink.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5943686523770218562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5943686523770218562?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/2lZD7h9CtGg/when-not-to-use-typolink.html" title="When not to use typoLink" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/04/when-not-to-use-typolink.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ICRHo5fip7ImA9WhVTGU4.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-7917676669803187700</id><published>2012-03-05T09:12:00.001+02:00</published><updated>2012-03-05T11:26:05.426+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-05T11:26:05.426+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Putin" /><title>Why did 65% of russians vote for Putin?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1YkvSReQXa21_30OJIY6uaPoXqg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1YkvSReQXa21_30OJIY6uaPoXqg/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/1YkvSReQXa21_30OJIY6uaPoXqg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1YkvSReQXa21_30OJIY6uaPoXqg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This article is unusual for my blog because I never talk politics here. I consider this article to be one of the most important articles in my blog and my life.&lt;/p&gt;
&lt;h3&gt;Why did I write this article?&lt;/h3&gt;
&lt;p&gt;On December 7th, 2011 FoxNews showed a report about protesters in Moscow. Here it is:&lt;/p&gt;
&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/tsqdzV_ccNg" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;The problem is: it is not Russia in the video. It is Greece. Fox News lied to its viewers. Same do other news agencies. They show you what you should see, not what really happens in Russia. They tell you what you should believe. And usually you do. Now read the truth.&lt;/p&gt;
&lt;p&gt;I am russian. I lived in Russia until I was 27, than I emigrated (you will understand later why). But I am still russian, I follow every event that happens in Russia, I visit it regularly and I have relatives there. Most likely I will return to Russia in the near future. If you want to know the truth about Putin, read on. I must warn that this article represents my own views and talks about the history as I remember and know it. Some bits can be incorrect but general picture should be right.&lt;/p&gt;&lt;p&gt;&lt;b&gt;I must tell that this is strictly my personal views on the subject.&lt;/b&gt;&lt;/p&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/03/why-did-65-of-russians-vote-for-putin.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-7917676669803187700?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/O0l-avTnkHA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/7917676669803187700/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/03/why-did-65-of-russians-vote-for-putin.html#comment-form" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7917676669803187700?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7917676669803187700?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/O0l-avTnkHA/why-did-65-of-russians-vote-for-putin.html" title="Why did 65% of russians vote for Putin?" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/tsqdzV_ccNg/default.jpg" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/03/why-did-65-of-russians-vote-for-putin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UFQnk_fCp7ImA9WhVTFU0.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-5354991387016826534</id><published>2012-02-29T09:40:00.000+02:00</published><updated>2012-02-29T09:40:13.744+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-29T09:40:13.744+02:00</app:edited><title>Birthday soon...</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Bbl-UF3RXu8tKrH7ueyihSYRBOw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bbl-UF3RXu8tKrH7ueyihSYRBOw/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/Bbl-UF3RXu8tKrH7ueyihSYRBOw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bbl-UF3RXu8tKrH7ueyihSYRBOw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I have a birthday on March 7th. Here is my &lt;a href="http://www.amazon.co.uk/registry/wishlist/3BX8QX2G3AQFX"&gt;wish list&lt;/a&gt;. Just in case ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-5354991387016826534?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/Qi0eAhsWwps" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/5354991387016826534/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/02/birthday-soon.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5354991387016826534?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5354991387016826534?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/Qi0eAhsWwps/birthday-soon.html" title="Birthday soon..." /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/02/birthday-soon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIESH0zfCp7ImA9WhVTFEg.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-5582035619644009855</id><published>2012-02-28T21:12:00.000+02:00</published><updated>2012-02-28T21:15:09.384+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-28T21:15:09.384+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Validating e-mail</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZH1GZIH9gNkgboNwq1FiGSjKNFo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZH1GZIH9gNkgboNwq1FiGSjKNFo/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/ZH1GZIH9gNkgboNwq1FiGSjKNFo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZH1GZIH9gNkgboNwq1FiGSjKNFo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;
Just the code:&lt;/p&gt;
&lt;a href="http://www.dmitry-dulepov.com/2012/02/validating-e-mail.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-5582035619644009855?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/0ZsyHywfIkc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/5582035619644009855/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/02/validating-e-mail.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5582035619644009855?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5582035619644009855?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/0ZsyHywfIkc/validating-e-mail.html" title="Validating e-mail" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/02/validating-e-mail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MBRHY6cSp7ImA9WhRaGUQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-7687274019641813979</id><published>2012-02-23T14:17:00.000+02:00</published><updated>2012-02-23T14:17:35.819+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-23T14:17:35.819+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Storing TypoScript in the file system</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xdvJTyotvESSyuvR3WQfUFq-Q2U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xdvJTyotvESSyuvR3WQfUFq-Q2U/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/xdvJTyotvESSyuvR3WQfUFq-Q2U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xdvJTyotvESSyuvR3WQfUFq-Q2U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There was an interesting question in the TYPO3 mailing lists: “How do you store TypoScript?”. Here is how I do that.&lt;br /&gt;
&lt;br /&gt;
I store TypoScript in the file system. There is a main file, which is included to the site TypoScript template using &lt;include_typoscript&gt; statement. This file contains statements to include other files.&lt;/include_typoscript&gt;&lt;br /&gt;
&lt;br /&gt;
Other files are created logically, per feature or group. For example, I usually have:&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;constants.txt – sets all constants&lt;/li&gt;
&lt;li&gt;config.txt – includes all “config” settings (such as “config.absRefPrefix”, etc)&lt;/li&gt;
&lt;li&gt;page.txt – creates PAGE object, including “page.headerData”&lt;/li&gt;
&lt;li&gt;seo.txt – all SEO options (some “config” settings come here)&lt;/li&gt;
&lt;li&gt;news.txt – includes the news plugin I use&lt;/li&gt;
&lt;li&gt;home_page_objects.txt – all TypoScript object, specific for home page&lt;/li&gt;
&lt;li&gt;...and so on.&lt;/li&gt;
&lt;/ul&gt;
Plugin files (such as “news.txt”) also include files from corresponding extensions using &lt;include_typoscript&gt;. “Include static (from extensions)” is empty in the TypoScript database record. That allows granular control on all included files. TypoScript from the css_styled_content extension is included into “page.txt”.&lt;br /&gt;
&lt;/include_typoscript&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
I avoid having multiple places for the same set of options. For example, all news settings will be in “news.txt”. The only exceptions are:&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;seo.txt, which contains certain SEO options from “config”&lt;/li&gt;
&lt;li&gt;“page.headerData”, which can appear in other files as necessary&lt;/li&gt;
&lt;/ul&gt;
However, “plugin.tt_news” will never appear outside of news.txt. Thus, if I need to choose news settings, I always know where they are. Also I can replace news plugins or remove it completely as necessary.&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
The buggest advantages of such approach are:&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;It is versionable. I use Git to store projects and store TypoScript in Git.&lt;/li&gt;
&lt;li&gt;It is very clean and clear. I always know where the stuff is. Any new maintainer will be able to see it too immediately.&lt;/li&gt;
&lt;li&gt;It allows to customise, replace or remove features very quickly.&lt;/li&gt;
&lt;/ul&gt;
If you have your own practices, please, share in comments.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-7687274019641813979?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/UY521oVU_kc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/7687274019641813979/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/02/storing-typoscript-in-file-system.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7687274019641813979?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7687274019641813979?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/UY521oVU_kc/storing-typoscript-in-file-system.html" title="Storing TypoScript in the file system" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>7</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/02/storing-typoscript-in-file-system.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4FSHs_fSp7ImA9WhRaGU0.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-784845517258469751</id><published>2012-02-22T11:45:00.001+02:00</published><updated>2012-02-22T11:45:19.545+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-22T11:45:19.545+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><title>Apple integrates Vimeo to Mountain Lion instead of YouTube</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pvaWpDheyC1OWggyYdmsfOsAKTo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pvaWpDheyC1OWggyYdmsfOsAKTo/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/pvaWpDheyC1OWggyYdmsfOsAKTo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pvaWpDheyC1OWggyYdmsfOsAKTo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Apple integrates Vimeo to Mountain Lion, skips YouTube. This is interesting &lt;a href="http://www.pocket-lint.com/news/44418/vimeo-not-youtube-gets-instant-share-mountain-lion"&gt;news&lt;/a&gt;, which shows several important signs to us.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
Firsts, Apple does not follow trends, it creates trends.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
When Apple refused to support flash, many saw this like an obvious fault, which would seriously decrease ratings of iOS. That did not happen. Flash came to Android but was unusable. In the end both Adobe and Google abandoned Flash support for mobile devices.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Secondly, if the service is absent on iOS, it looses a lot of audience.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
While Facebook is a huge web site, it is not really present on iOS. Due to unknown reasons Facebook and Apple did not agree on Facebook integration to iOS. As a result Apple integrated Twitter support to iOS, which gave Twitter a huge boost: lots of twits now come from iOS devices. iOS is also known as the OS, which makes the most of Internet traffic these days.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Thirdly, Google should not have fought Apple.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
When Google decided to make a concurrent product and hired a former Apple employee, who was working on iPhone to create Android, this was unfair. Apple now ignores all new Google services and includes products from alternative solution vendors. Twitter instead of Google Buzz, Vimeo instead of YouTube.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Will Apple remove YouTube and Gmail support from iOS?&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
I do not think this will happen soon but it is likely. Apple becomes more and more agressive in defending its inventions, so I do not see why they would promote competitor's services any more. Personally I have nothing against Google (I like Gmail) but Apple may &lt;i&gt;think different&lt;/i&gt;.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
We can also remember a huge scandal when Google cheated on Safari users, implementing workarounds for Safari privacy policy to avoid cookie blocking by users. Not nice at all.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
“If you are against us, you are not with us”, that's current Apple policy. If somebody acts against you, you do not have to be good to him. Sounds natural.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-784845517258469751?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/Gh8QA6kFuR4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/784845517258469751/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/02/apple-integrates-vimeo-to-mountain-lion.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/784845517258469751?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/784845517258469751?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/Gh8QA6kFuR4/apple-integrates-vimeo-to-mountain-lion.html" title="Apple integrates Vimeo to Mountain Lion instead of YouTube" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/02/apple-integrates-vimeo-to-mountain-lion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUNQX06eCp7ImA9WhRaE0U.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-8082905726634616062</id><published>2012-02-16T10:05:00.005+02:00</published><updated>2012-02-16T12:14:50.310+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-16T12:14:50.310+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><title>Jedi programmers</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pB83JNvQ_FJ2SEG-FeUyHIkXKmI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pB83JNvQ_FJ2SEG-FeUyHIkXKmI/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/pB83JNvQ_FJ2SEG-FeUyHIkXKmI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pB83JNvQ_FJ2SEG-FeUyHIkXKmI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There are three levels of coding that you can master: dumb, professional and jedi.&lt;br&gt;
&lt;br&gt;
Dumb level is for those, who go for straight solutions, who never learn anything new, who do not care to find a better solution that they already know. Dumb programmers are best seen when they receive a bug report. Upon receiving a report, they start adding messages to the web page content at every possible code point, including points that are far from the cause of the problem (meanwhile visitors wonder what does that rubbish mean on the site). Sometimes dumb programmers just go and “fix” the issue by making the straightest, fastest and dumbest solution possible: the solution, which is neither good, nor it is entirely correct. Fixing typically happens on the live host and disrupts host&amp;#39;s work with error messages and down times. Well, it is dumb.&lt;br&gt;
&lt;br&gt;
Professional level is for those, who understand the importance of learning, the priority of the quality and that the first solution is not necessarily the best one. When it comes to bug fixing, they realize that to fix the issue, they need to find its cause. Professional people typically investigate first. Often they use developer&amp;#39;s log, debug messages that are visible only to them or a debugger. People, who mastered the debugger, usually figure out the cause of the bug faster. Next they try to resolve the bug in a good way. Professionals do not take the first obvious approach but try to evaluate it from all sides and see the consequences of their fixes. They usually work at development host and choose to integrate their changes to the live environment with no or minimal disruption.&lt;br&gt;
&lt;br&gt;
Jedy never do like dumb people but they often do the same as professional people do. Often, but not always. For example, with bugs a jedy can investigate the bug by just clicking and looking. Often they do not need to use the debugger or debug messages at all. And here I can&amp;#39;t resist posting a quote from a sixth Harry Potter book:&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/02/programming-jedi.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-8082905726634616062?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/sCXDmO_TOac" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/8082905726634616062/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/02/programming-jedi.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8082905726634616062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8082905726634616062?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/sCXDmO_TOac/programming-jedi.html" title="Jedi programmers" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/02/programming-jedi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8GSXszfSp7ImA9WhRbEE8.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-3188880670920330360</id><published>2012-01-31T17:13:00.003+02:00</published><updated>2012-01-31T17:13:48.585+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-31T17:13:48.585+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>Mac: adding a keyboard layout using AppleScript</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/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/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q4uZAHYfRrfzBAQRUz7aWv79c8Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
We have a special keyboard layout in the country, where I live (Latvia). It includes certain special letters: like ā, ē, ū and so on. Many people here set Latvian keyboard layout as a default. However I cannot do that because this layout has one major disadvantage for people like me.&lt;br&gt;
&lt;br&gt;
Those special letters are typed by one of two ways: Alt+normal letter or &amp;#39;+normal letter. While the first way is goot, the second one is bad for programmers. I often use &amp;#39; in the code, so having &amp;#39; as a &amp;quot;dead key&amp;quot; (this is how it is called officially) is not suitable. But I still have to type those latvian chars sometimes. Until yesterday I kept English US layout as a default and added Latvian manually when I had to type latvian letters. This is a multiple move-and-click process. Yesterday I finally found a way to automate addition and removal of the layout.&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/01/mac-adding-keyboard-layout-using.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-3188880670920330360?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/8stai0JYVi8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/3188880670920330360/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/01/mac-adding-keyboard-layout-using.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3188880670920330360?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3188880670920330360?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/8stai0JYVi8/mac-adding-keyboard-layout-using.html" title="Mac: adding a keyboard layout using AppleScript" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-vBCZwRdcfCI/TygEd5qhj9I/AAAAAAAAAYc/yvbqBmLgWBI/s72-c/system-preferences.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/01/mac-adding-keyboard-layout-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMQn0ycCp7ImA9WhRVF0Q.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2237747928430737421</id><published>2012-01-17T10:53:00.000+02:00</published><updated>2012-01-17T10:53:03.398+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T10:53:03.398+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Current life</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wGXc0qr9AF3RdJBKHashEWXnYCs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGXc0qr9AF3RdJBKHashEWXnYCs/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/wGXc0qr9AF3RdJBKHashEWXnYCs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGXc0qr9AF3RdJBKHashEWXnYCs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I am not very much visible in TYPO3 these days. So I though I would give a short update on what I am doing or going to do.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/01/current-life.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2237747928430737421?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/wkSgj_kUhg8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2237747928430737421/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/01/current-life.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2237747928430737421?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2237747928430737421?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/wkSgj_kUhg8/current-life.html" title="Current life" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/01/current-life.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cBRHw5eyp7ImA9WhRVEk0.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-7140359129801756082</id><published>2012-01-10T16:17:00.000+02:00</published><updated>2012-01-10T16:17:35.223+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-10T16:17:35.223+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><category scheme="http://www.blogger.com/atom/ns#" term="Performance" /><title>Cleaning and optimising cache tables in TYPO3</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zspNItt3QtwP_PE0FnoqIscrzMk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zspNItt3QtwP_PE0FnoqIscrzMk/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/zspNItt3QtwP_PE0FnoqIscrzMk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zspNItt3QtwP_PE0FnoqIscrzMk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There is an important issue with cache tables in TYPO3, which I am going to address in this article. The issue can become critical for projects with a limited disk space, projects with lots of user groups, which use indexed search or Solr, or projects with lots of pages.&lt;br&gt;
&lt;br&gt;
Cache tables are designed to provide a high-performance access for simultaneous reads and writes. This means that several reads at a time should be possible as well as several writes and none should block each other. This is possible when cache tables use InnoDB MySQL database engine. InnoDB provides concurrency and data safety against sudden failures. TYPO3 uses InnoDB for several critical tables, including cache tables.&lt;br&gt;
&lt;br&gt;
Sometimes cache tables can grow a lot. The more records exist in the cache table, the slower it is to find a necessary record there. TYPO3 provides a special scheduler task to clean up old cache records. If you have TYPO3 4.6 or newer, you should always use that task.&lt;br&gt;
&lt;br&gt;
However, there is a certain fact that very few users know: &lt;i&gt;running the task will remove entries from the table but it will not recover the disk space taken by removed records&lt;/i&gt;. InnoDB does not reuse the space when records are deleted. It always appends new data to the end of the allocated data file. Thus it is possible to have a fully empty InnoDB table, which takes 100GB on the disk.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2012/01/cleaning-and-optimising-cache-tables-in.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-7140359129801756082?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/IJBkZvVHQX4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/7140359129801756082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2012/01/cleaning-and-optimising-cache-tables-in.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7140359129801756082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/7140359129801756082?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/IJBkZvVHQX4/cleaning-and-optimising-cache-tables-in.html" title="Cleaning and optimising cache tables in TYPO3" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2012/01/cleaning-and-optimising-cache-tables-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAFSX0_eyp7ImA9WhRWEk4.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-5632547733351956012</id><published>2011-12-30T11:32:00.000+02:00</published><updated>2011-12-30T11:35:18.343+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-30T11:35:18.343+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Productivity" /><title>How to solve any kind of problems</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f7b4ez5aFjVE0-LLXwwoltBTdaQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f7b4ez5aFjVE0-LLXwwoltBTdaQ/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/f7b4ez5aFjVE0-LLXwwoltBTdaQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f7b4ez5aFjVE0-LLXwwoltBTdaQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I planned to write this post for a long time. The post is long and it provides detailed instructions on solving any kind of problems. Surprisingly, when it comes to solving problems, the same algorithm works for everything. I came to this algorithm after 15 years of being a software developer, a manager for my own company projects, a family man and a dad. It is not importatnt where the problem is as soon as you folloe the algorithm. You can solve the problem with it, if it is solvable according to laws of the nature and means you have under hand.

The algorithm consists from six steps. Let's begin.

&lt;h2&gt;Realize that the problem exists&lt;/h2&gt;

This may sound dumb but this is where the failures start. How much time did you say to yourself: "Oh, it is not a proble!m" only to regret later that you did not address it in the beginning? Son has bad marks in school? Ah, well, he will recover. Customer complains? Ah, well, they always find something to complain about.

Sorry, it does not work. Listen to your instincts. If they say, you might have a problem, than most likely you have it. &lt;b&gt;The cost of solving the problem increases with time.&lt;/b&gt; The later you realize you have the problem, the more effort you have to make to solve it. The more you delay, the more you loose.

So, the very first step to solve the problem is to realize that it exists. Be honest with yourself and say it to yourself: "I have a problem to solve". With that you are closer to solving the problem than you was before. This helps you to commit to solving the problem. 

&lt;h2&gt;Realize what the problem is&lt;/h2&gt;

This is a different step. If you realize that you have a problem, it does not mean you realize what the problem is. Your son is getting bad marks? Is that a problem? Most people will say "yes" and be wrong here. Getting bad marks is not a problem, it is a result, an outcome of the problem. This is why it is important to realize what the problem is. 

Uncovering the real problem could be difficult but this is the time when you should not rush. If you rush now, you may end up solving an imagined problem, not a real one. Really, bad marks - what else could be a problem? Well, tons of them. It can be bad relations with classmates or teachers, wrong course, even medical issues! &lt;b&gt;You must invest time to understand the root, the cause of the problem!&lt;/b&gt; If your head aches, you would not chop it, right? For the first time you may take a medicine to ease the pain but if the pain returns, you go to see the doctor. Same with any other problem: get to the root of it, see if your "problem" is not a sympthom of something deeper.

&lt;h2&gt;Research possible solutions&lt;/h2&gt;

This is what most people never do. That just catch the first idea that comes to their mind and go for it. This rarely works satisfactory. The first solution is almost never good. Therefore for years I nver take the first thing that comes to my mind as a solution. I know that there always exists a better solution. It only ta,es time to get it. Cool down. Stop. Don't rush again. Think!

Depending on the complexity of the problem and your familiarity with the topic it may take from minutes to months to discover the solution. Months is extreme, of course. Usually it does not take that long. For technical issues I take about 3-4 hours to do something else while putting the problem somewhere to the back of my mind (I imagine it like an old closet of 18th century with many small doors where I can put the problem to "cook" for a while). For something related to kids I usually must sleep ovErnight to Find a decision.

It really works. Everytime when I find a better solution, I am surprised how better it it than the first idea that came to my mind. May be this is why my work is usually good: I take time to think about it while doing other tasks. It does work!

&lt;h2&gt;Make a plan&lt;/h2&gt;

Yup, this is another thing very few people do.

You do not have to write a detailed plan on a roll of paper or in the spreadsheet. Well, you can, if you want or if the problem is complex and sution is lengthy, but a menthal plan do in most cases. The reason for having a plan is simple: &lt;b&gt;You must know what to do exactky to solve the problem and in what sequence&lt;/b&gt;. Chaos is not your way, believe me.

&lt;h2&gt;Execute&lt;/h2&gt;

Only now, when you are clear about the problem, solution and plan, you can go and execute your plan. Remember, that there are no plans without flaws. Even brilliant plans have flaws. So be able to readjust dynamically by temporary going back as many steps as you need. This may sound complicated and time consuming but it is not. When you become used to this algorithm, you will discover to your amazement that you can do it automatically. It is simplicy practice.

&lt;h2&gt;Wrap-up&lt;/h2&gt;

It is a good thing to make a wrap-up after the problem is solved. I rarely write down what the problem was and what I did to solve it (right and wrong) but if you can write it down in a personal diary, it would be good. You can come to it later if necessary.

Why don't I do it? Well, I do not like to write on paper and I could not find a good app for that. At least, I do a quick analysis afterwards and try to see what I did well and what I did badly. That helps to avoid the same mistakes later.

&lt;h2&gt;Conclusion&lt;/h2&gt;

What do you think of this? Does that sound like a good algorithm to you? I you have anything to add, please, write in in comments.

P.S. No, my son does not have bad marks :) It was just a common example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-5632547733351956012?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/j7oro3U08og" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/5632547733351956012/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/how-to-solve-any-kind-of-problems.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5632547733351956012?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/5632547733351956012?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/j7oro3U08og/how-to-solve-any-kind-of-problems.html" title="How to solve any kind of problems" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/how-to-solve-any-kind-of-problems.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8MQH04fyp7ImA9WhRXGU4.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6663501351861619088</id><published>2011-12-26T22:21:00.001+02:00</published><updated>2011-12-26T22:21:21.337+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T22:21:21.337+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Transferring domains from GoDaddy</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IYDJ8iFzO_UGzzXWglfHNAgPKl8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IYDJ8iFzO_UGzzXWglfHNAgPKl8/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/IYDJ8iFzO_UGzzXWglfHNAgPKl8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IYDJ8iFzO_UGzzXWglfHNAgPKl8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I am transferring all my domains from GoDaddy to protest against their SOPA support. This means my blog may become unavailable for a short time in the coming days until the domain name is fully visible with a new registar. In case, if you cannot see this blog, do not panic. It will be back online.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6663501351861619088?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/-qE9nE1FaW8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6663501351861619088/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/transferring-domains-from-godaddy.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6663501351861619088?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6663501351861619088?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/-qE9nE1FaW8/transferring-domains-from-godaddy.html" title="Transferring domains from GoDaddy" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/transferring-domains-from-godaddy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4DSX08eSp7ImA9WhRQF0Q.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-8626935934373770030</id><published>2011-12-13T17:42:00.002+02:00</published><updated>2011-12-13T17:42:58.371+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T17:42:58.371+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mac" /><title>How to make a Macbook Pro DVD drive region-free in Lion</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Oikpimo_TRZavoYQYIqAfMjHSVc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oikpimo_TRZavoYQYIqAfMjHSVc/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/Oikpimo_TRZavoYQYIqAfMjHSVc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oikpimo_TRZavoYQYIqAfMjHSVc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Apple ships Macbooks with drives without a region set. However, before you watch the movie, you have to set a region. Later you can change it but not more then four times. The solution is to this problem is to flash your DVD drive with a modified &amp;quot;RPC-1&amp;quot; firmware. The risks are as usual: anything can grow wrong, you can brick your drive, warranty is under question, etc. So don&amp;#39;t do that unless you are ready to take the risk.&lt;br&gt;
&lt;br&gt;
There are lots of instructions on the web how to make it. For my drive, Google leads me to two pages: &lt;a href="http://hackthemac.blogspot.com/2010/02/while-back-i-recorded-how-to-make.html"&gt;one&lt;/a&gt; and &lt;a href="http://forum.rpc1.org/viewtopic.php?f=30&amp;amp;t=46116&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a"&gt;two&lt;/a&gt;. They are all ok except that they require a Matshita Flasher application, which does not work in Lion (PPC applications are not supported). However, this application is only a wrapper around the real flasher, so you &lt;b&gt;can&lt;/b&gt; flash your Macbook under Lion too. Notice: I did not tell you to do it! I am just providing the information.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/how-to-make-macbook-pro-dvd-drive.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-8626935934373770030?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/pz9fZIxkG8k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/8626935934373770030/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/how-to-make-macbook-pro-dvd-drive.html#comment-form" title="43 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8626935934373770030?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/8626935934373770030?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/pz9fZIxkG8k/how-to-make-macbook-pro-dvd-drive.html" title="How to make a Macbook Pro DVD drive region-free in Lion" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>43</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/how-to-make-macbook-pro-dvd-drive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMDQXc6fyp7ImA9WhRQEEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6869383800191625398</id><published>2011-12-05T09:00:00.000+02:00</published><updated>2011-12-05T15:57:50.917+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-05T15:57:50.917+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><title>Improving battery life for Apple devices</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mw0nLRbCWEGpCHRadYhB9_UkEJk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mw0nLRbCWEGpCHRadYhB9_UkEJk/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/mw0nLRbCWEGpCHRadYhB9_UkEJk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mw0nLRbCWEGpCHRadYhB9_UkEJk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There is an ongoing discussion on the Internet about troubles with iPhone 4S battery and iOS 5. Many users got decreased battery life with iOS 5. While it is definitely a problem in the firmware, there are ways that can help you increase battery life of any Apple device. I am talking Apple here because I used that for every Apple device I owned. Apple designs batteries themselves and all batteries I had, were made by a single manufacturer. So other devices may need a different way to extend battery life.&lt;br&gt;
&lt;br&gt;
When I got a new iPhone 4S, it came with iOS 5.0. I upgraded to iOS 5.0.1. The phone did not survie a day of charge. Now it survives 3 days with using e-mail, twitter, facebook + location services. How did I do that?&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/improving-battery-life-for-apple.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6869383800191625398?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/bRrlg3ApJH8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6869383800191625398/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/improving-battery-life-for-apple.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6869383800191625398?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6869383800191625398?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/bRrlg3ApJH8/improving-battery-life-for-apple.html" title="Improving battery life for Apple devices" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-_JX38Q9Kk6c/TttEmCkKinI/AAAAAAAAAX8/ibcVPwErfEI/s72-c/battery-conditioned.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/improving-battery-life-for-apple.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNQXc5eCp7ImA9WhRRGUQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1698412050733716247</id><published>2011-12-04T10:46:00.001+02:00</published><updated>2011-12-04T11:19:50.920+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-04T11:19:50.920+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Productivity" /><title>Efficient e-mail communication</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mUONL612ucqO1OO6y33d_TfWYxM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mUONL612ucqO1OO6y33d_TfWYxM/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/mUONL612ucqO1OO6y33d_TfWYxM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mUONL612ucqO1OO6y33d_TfWYxM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Frech IT company named Atos (74,000 employees) will &lt;a href="http://abcnews.go.com/blogs/business/2011/11/tech-company-implements-employee-zero-email-policy/"&gt;completely ban all internal e-mails&lt;/a&gt; in 1.5 years. Its CEO, Tony Breton, said that an average employee gets about 200 e-mails daily. Of them, about 18% are spam and only 10% are useful. They already reduced e-mail traffic by 20% and happy with results. Atos management says that employees will continue to communicate using instant messaging and Facebook-like posts.&lt;br&gt;
&lt;br&gt;
Atos made a step towards better efficiency in business communication. This is a great and clever decision.&lt;br&gt;
&lt;br&gt;
I agree that e-mail channels often become a major distraction way. While it is possible to filter out spam effectively with relatively simple measures, other e-mail message often &lt;a href="http://www.dmitry-dulepov.com/2009/09/e-mail-puzzle.html"&gt;remain inefficient&lt;/a&gt;. Many mails come with extra words, long disclaimers, polite but needless &amp;quot;how are you&amp;quot;s, etc. I believe that business correspondence should be strictly about business. This position may seem extreme to some readers. We all know that business often grows due to personal relations. But it is a good thing to separate personal and business when you want to talk about tasks. Time is extremely valuable, so loosing it for inefficient e-mails is not a good thing. If it is a business e-mail, it is about business, so let&amp;#39;s get straight to business without personal stuff. Personal stuff is ok in personal e-mails but if person A needs person B to do something, just ask for it. The clearer A does it, the more chances that he will get it.&lt;br&gt;
&lt;br&gt;
Here is an example of a great e-mail I got recently:&lt;br&gt;








&lt;br&gt;
&lt;blockquote class="tr_bq"&gt;
Hi Dmitry, &lt;/blockquote&gt;
&lt;blockquote class="tr_bq"&gt;
for our XYZ customer, we have a new request to extend RealURL. It sounds quite simply. Could you please check if this is possible an how much effort it takes you to do the changes with RealURL? &lt;/blockquote&gt;
&lt;blockquote class="tr_bq"&gt;
With RealURL it is possible to ...&lt;/blockquote&gt;
&lt;div class="p1"&gt;
This is an excellent e-mail: short, concrete, easy to read, clear. When I communicate, I prefer the same style:&lt;/div&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/efficient-e-mail-communication.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1698412050733716247?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/lcN0y-vxC7Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1698412050733716247/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/efficient-e-mail-communication.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698412050733716247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698412050733716247?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/lcN0y-vxC7Y/efficient-e-mail-communication.html" title="Efficient e-mail communication" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/efficient-e-mail-communication.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMMQHw5cCp7ImA9WhRQEEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-3154276308212102183</id><published>2011-12-02T11:31:00.001+02:00</published><updated>2011-12-05T15:58:01.228+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-05T15:58:01.228+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tools" /><title>Importance of tools</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fTkX38Q_IZkQz7f4xPGo9IqyFjo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fTkX38Q_IZkQz7f4xPGo9IqyFjo/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/fTkX38Q_IZkQz7f4xPGo9IqyFjo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fTkX38Q_IZkQz7f4xPGo9IqyFjo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Quite often I hear an opinion that tools do not matter. If the person is good at his work, he will do it well with any tools. Well, this is both true and false.
&lt;br&gt;
&lt;h2&gt;


When tools do not matter&lt;/h2&gt;
When I was in school, I went to a photography class after official lessons. It was not like a school class, it was more like a community of pupil with an adult teaching us how to make photos. He owned a very good camera (6x6 cm) and we all complained that he can do good photos with his good equipment, while we can&amp;#39;t do it with our cheap cameras.&lt;br&gt;
&lt;br&gt;
Once he became annoyed by our complaints and took us to the outside for a three hour training in the forst. We were to photograph freely what we see and like. Some went do their work alone, our followed our teacher trying to make the same photos as he did. He gave everybody the &lt;a href="http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Lomo_smena_8m.jpg"&gt;cheapest possible camera&lt;/a&gt; (we had a stock of them in the class) and took one of them too.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/12/importance-of-tools.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-3154276308212102183?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/SkqWTjDbRbo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/3154276308212102183/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/12/importance-of-tools.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3154276308212102183?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/3154276308212102183?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/SkqWTjDbRbo/importance-of-tools.html" title="Importance of tools" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/12/importance-of-tools.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMNQ348cCp7ImA9WhRQEEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1330981741204609477</id><published>2011-11-30T20:04:00.001+02:00</published><updated>2011-12-05T15:58:12.078+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-05T15:58:12.078+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tools" /><title>PhpStorm 3.0 is out</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nfzBklUId8yvn9Whm7ze2M1npqQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nfzBklUId8yvn9Whm7ze2M1npqQ/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/nfzBklUId8yvn9Whm7ze2M1npqQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nfzBklUId8yvn9Whm7ze2M1npqQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Just got a message from JetBrains:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
PhpStorm 3.0 is now available and introduces the Smart Duplicated Code Detector to help you quickly find similar blocks through your entire code base and securely get rid of them without losing the intended functionality.&lt;br /&gt;
Also a new integrated UML tool allows you to quickly get a bird’s-eye-view of your project structure, or even a semantic view of the changes in the recent VCS commits made by your colleagues.&lt;br /&gt;
Furthermore, to ensure that your code works fast and doesn’t cause any performance bottlenecks, the IDE now includes a profiler, a new PHPUnit test runner and JSTestDriver.&lt;br /&gt;
The new key functionality in PhpStorm 3.0 includes:&lt;br /&gt;
- Smart Duplicated Code Detector&lt;br /&gt;
- PHP UML roundtrip diagrams&lt;br /&gt;
- Profiling results browser for Xdebug and Zend Debugger engines&lt;br /&gt;
- PhpUnit 3.6 integration&lt;br /&gt;
- CoffeeScript support&lt;br /&gt;
- Significant improvements to FTP/SFTP Sync&lt;br /&gt;
- TFS support and revision graph for GIT&lt;br /&gt;
- Streamlined UI across all operating systems&lt;/blockquote&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;a href="http://www.jetbrains.com/phpstorm?php"&gt;Get PhpStorm 3.0&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1330981741204609477?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/9u5MM3VPBV0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1330981741204609477/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/phpstorm-30-is-out.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1330981741204609477?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1330981741204609477?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/9u5MM3VPBV0/phpstorm-30-is-out.html" title="PhpStorm 3.0 is out" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/phpstorm-30-is-out.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcCQno4fip7ImA9WhRRFks.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2433051180003531434</id><published>2011-11-30T15:30:00.001+02:00</published><updated>2011-11-30T15:34:23.436+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T15:34:23.436+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Submitting FLUID forms</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/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/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SyKNQ5YKiKcgYm4fF0ZB5c7n1fU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
If you use&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;f:form&lt;/span&gt; view helper and submit data using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;GET&lt;/span&gt; requests, make sure you add &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;noCacheHash="true"&lt;/span&gt; to the f:form. For example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;f:form action="register" method="post" id="tx_myext" noCacheHash="true"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you don't, you will put a copy of the page to the cache for each submitted request. That's not necessary.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It is good to put this option also when you submit using POST because there is no need for cHash in such case.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2433051180003531434?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/pUynZu62XTc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2433051180003531434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/submitting-fluid-forms.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2433051180003531434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2433051180003531434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/pUynZu62XTc/submitting-fluid-forms.html" title="Submitting FLUID forms" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/submitting-fluid-forms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4FQ3s6eSp7ImA9WhRRFkk.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-4765814821883415707</id><published>2011-11-30T10:34:00.001+02:00</published><updated>2011-11-30T11:05:12.511+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T11:05:12.511+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>USER_INT is not evil, your code is!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lxbSG1sGKqGKpkCL_37UXJECrQA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lxbSG1sGKqGKpkCL_37UXJECrQA/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/lxbSG1sGKqGKpkCL_37UXJECrQA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lxbSG1sGKqGKpkCL_37UXJECrQA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Quite often I hear a wrong idea that USER_INT plugins is a source of all evil when it comes to TYPO3 performance. I have to bust this myth into dust.&lt;br&gt;
&lt;br&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;img border="1" height="226" src="http://2.bp.blogspot.com/-DEwsNPyTRAo/TtXuy1PSEfI/AAAAAAAAARE/HDY2MJpJuMs/s320/iStock_000005198862Small.jpg" width="320"&gt;&lt;/div&gt;
&lt;br&gt;
&lt;span id="goog_1234103490"&gt;&lt;/span&gt;&lt;span id="goog_1234103491"&gt;&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
When TYPO3 renders a page, it has to do a lot of stuff. What happens when you request a page under /profile/details/ URL? Firsts, TYPO3 has to resolve the URL to a page id. It calls RealURL to do that. RealURL makes a lot of stuff internally. In the happiest case it makes at least one database query. In the worst case number of database queries will be more than a number of tree levels to the page. TYPO3 page tree implementation is not optimised for performance at all, so you start loosing speed already here. Did anybody thought “nested set”? Nope, no such thing in TYPO3.&lt;br&gt;
&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/11/userint-is-not-evil-your-code-is.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-4765814821883415707?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/JrXK0igefcQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/4765814821883415707/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/userint-is-not-evil-your-code-is.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/4765814821883415707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/4765814821883415707?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/JrXK0igefcQ/userint-is-not-evil-your-code-is.html" title="USER_INT is not evil, your code is!" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-DEwsNPyTRAo/TtXuy1PSEfI/AAAAAAAAARE/HDY2MJpJuMs/s72-c/iStock_000005198862Small.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/userint-is-not-evil-your-code-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08ARnY8eyp7ImA9WhRRFUo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2677286336206226362</id><published>2011-11-29T16:52:00.001+02:00</published><updated>2011-11-29T17:17:27.873+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T17:17:27.873+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Business" /><title>Two types of developers</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sGCIg894OujvlOamnK9SmXYkLxQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sGCIg894OujvlOamnK9SmXYkLxQ/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/sGCIg894OujvlOamnK9SmXYkLxQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sGCIg894OujvlOamnK9SmXYkLxQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I divide all developers into two types: team developers and solo developers. Any developer can be good or bad but these two types are fundamentally different in their thinking and approaches to work. It is important to know with whom you work and adjust accordingly.&lt;br&gt;
&lt;h2&gt;

Team developers&lt;/h2&gt;
Team developers work well in a team. They need other players. They can work on their assigned tasks but only if those tasks are a part of a whole. Team developers do not like to assume a complete responsibility on the project.&lt;br&gt;
&lt;br&gt;
Typically team developers usually communicate well with others, they like to communicate and socialize. They can do the assigned work of any kind but they generally do not have or strive to leran new stuff. They are not entrepreneurs at heart. However they work great in the team. So they are especially useful in big projects when management needs &amp;quot;resources&amp;quot; to fulfil the task.&lt;br&gt;
&lt;br&gt;
Team developers can become good team leaders because they understand the environment they work in.&lt;br&gt;
&lt;h2&gt;

&lt;/h2&gt;&lt;/div&gt;&lt;a href="http://www.dmitry-dulepov.com/2011/11/two-types-of-developers.html#more"&gt;Read more »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2677286336206226362?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/L068olfAzK0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2677286336206226362/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/two-types-of-developers.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2677286336206226362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2677286336206226362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/L068olfAzK0/two-types-of-developers.html" title="Two types of developers" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/two-types-of-developers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUINQ3w5eyp7ImA9WhRRFUg.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1698567290451086878</id><published>2011-11-29T09:59:00.001+02:00</published><updated>2011-11-29T09:59:52.223+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T09:59:52.223+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Blog migration, RSS feed woes</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uvPps1vyor5RrH80y-wml4EDKlk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvPps1vyor5RrH80y-wml4EDKlk/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/uvPps1vyor5RrH80y-wml4EDKlk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvPps1vyor5RrH80y-wml4EDKlk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
As you may have noticed, I migrated to an external blog service. Domain name is the same but I am using Blogger now. There were several reasons to migrate:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;I do not want to maintain the infrastructure.&amp;nbsp;The blog ran on my own server, so I had to watch logs, do updates, etc. I rather not to do that because this blog is a hobby and not a real project.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Better blogging capabilities. As a &lt;a href="http://www.dmitry-dulepov.com/2011/10/using-typo3-for-blogging.html" style="text-align: -webkit-auto;"&gt;wrote&lt;/a&gt;&lt;span class="Apple-style-span" style="text-align: -webkit-auto;"&gt; already, TYPO3 is not really good for blogging at the moment. Blogger gives far more power tools&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;RTE is much better. When I prepared posts in the past, I always had to fight the TYPO3 RTE. It inserted &amp;amp;nsbp; all over the place, it changed markup all the time, added new paragraphs. So I sent at least 20∞ of time reformatting the article after it was published. Now I simply type and it works.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Better spam handling. There is one guy from India, who&amp;nbsp;regularly&amp;nbsp;tries to abuse my blog by posting offensive words in his language together with phrases like "TYPO3 is great". Other Indians (for whom I have a great respect as a nation), would come here and see all that junk and turn away. This abuser is filtered away automatically now. Never could understand why would people do such destructive things...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
About RSS&lt;/h3&gt;
The side effect of changing the blog is that everybody, who subscribed to &lt;a href="http://feeds.feedburner.com/dmitry-dulepov"&gt;my RSS feed&lt;/a&gt;, got a lot of old articles marked as unread. I apologize for that. It happens when the blog platform changes. Just mark them as read.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Also I ask subscribers to check the feed they use. The right feed is http://feeds.feedburner.com/dmitry-dulepov. If you use anything else, please, subscribe to &lt;a href="http://feeds.feedburner.com/dmitry-dulepov"&gt;http://feeds.feedburner.com/dmitry-dulepov&lt;/a&gt;. All other feed links will cease to exist soon.&lt;br /&gt;
&lt;br /&gt;
After using Blogger for a day I feel excited. It is very convenient. I think I'll blog more now. I have ideas for the whole set of articles on TYPO3, better coding, doing stuff in a right way. So stay tuned :)&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1698567290451086878?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/o50opK3_RTY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1698567290451086878/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/blog-migration-rss-feed-woes.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698567290451086878?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1698567290451086878?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/o50opK3_RTY/blog-migration-rss-feed-woes.html" title="Blog migration, RSS feed woes" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/blog-migration-rss-feed-woes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4AQHg_eCp7ImA9WhRRFEQ.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-2481693802425313828</id><published>2011-11-28T16:35:00.001+02:00</published><updated>2011-11-28T16:35:41.640+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T16:35:41.640+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Internal knowledge</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eyNvL0439cHpIzzr2xJqjpmAFLo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eyNvL0439cHpIzzr2xJqjpmAFLo/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/eyNvL0439cHpIzzr2xJqjpmAFLo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eyNvL0439cHpIzzr2xJqjpmAFLo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
There is one way to introduce problems in the code, which I'd like to discuss today.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a module, which creates database records. The module has an integer field with a set of flags (each flag is a single bit in the integer). Flags 2 and 4 mean thing X. Flags 2 and 6 mean thing Y. Flag 1 must be used only together with flag 3 or flag 5. The module knows how to manage those flags and what to make of them. Let's name it “module 1”.&lt;br /&gt;
&lt;br /&gt;
Now imagine another module (“module two”). It needs to get information from the first module, that matches certain criteria. Module one would be able to provide that information by matching flags.&lt;br /&gt;
&lt;br /&gt;
Here is the tricky part. The most obvious solution would be simply to query the database directly from module two. Proper solution for module two would be to ask module one for the information. Querying module one's tables using a combination of flags is wrong. Such query uses the internal knowledge of module one outside of the module one. Thus, the implementation of module two becomes dependent on the implementation of module one.&lt;br /&gt;
&lt;br /&gt;
Do you see potential problems here?&amp;nbsp;If module one changes, module two breaks. This "solution spread" introduces unnecessary dependencies between logically separate modules, which is neither necessary, nor good.&lt;br /&gt;
&lt;br /&gt;
A proper way would be to create an API in the module one that returns records, required by module two. If the internal implementation of module one changes, module two will work because all internal proceedings happen inside a single place.&lt;br /&gt;
&lt;br /&gt;
Next time, when you are about to introduce cross-module dependencies, think of minimising them in favor of API usage.&lt;br /&gt;
&lt;br /&gt;
This article was inspired by a &lt;a href="http://forge.typo3.org/issues/32136"&gt;http://forge.typo3.org/issues/32136&lt;/a&gt; in TYPO3.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-2481693802425313828?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/qBEWs2onNXY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/2481693802425313828/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/internal-knowledge.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2481693802425313828?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/2481693802425313828?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/qBEWs2onNXY/internal-knowledge.html" title="Internal knowledge" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/internal-knowledge.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACR3k6eyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1963472653701708564</id><published>2011-11-27T19:42:00.000+02:00</published><updated>2011-11-28T11:16:06.713+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:16:06.713+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Productivity" /><title>Productivity</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/INZFtgT9OD4r_ck3FdBoDfnjPoc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INZFtgT9OD4r_ck3FdBoDfnjPoc/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/INZFtgT9OD4r_ck3FdBoDfnjPoc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INZFtgT9OD4r_ck3FdBoDfnjPoc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Instead of giving you a full post about productivity, I'll give you a link to much better information than I was going to write. &lt;link -="" external-link-new-window="" http:="" productiveblog.tumblr.com=""&gt;&lt;/link&gt;&lt;a href="http://productiveblog.tumblr.com/"&gt;The Ultimate Productivity Blog&lt;/a&gt; gives you a 100% productivity recipe.&lt;br /&gt;
Read it. You will love it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1963472653701708564?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/d_nktiK5GdA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1963472653701708564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/productivity.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1963472653701708564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1963472653701708564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/d_nktiK5GdA/productivity.html" title="Productivity" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/productivity.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AMQn09eyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-1590428282372846059</id><published>2011-11-27T11:35:00.000+02:00</published><updated>2011-11-28T11:16:23.363+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:16:23.363+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3" /><title>Frustrated by the tt_news upgrade</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OctnAm77YjRXndF_9e0wiavov68/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OctnAm77YjRXndF_9e0wiavov68/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/OctnAm77YjRXndF_9e0wiavov68/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OctnAm77YjRXndF_9e0wiavov68/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Today I wanted to write a blog post about productivity. Coming to the BE I noticed that I still had TYPO3 4.4.9 running. So I went to upgrade. It usually takes 10-20 minutes to upgrade a TYPO3 version for me. Well, it took nearly 2.5 hours and I had to revert from tt_news 3.1.0 to old good tt_news 2.5.0 because 3.1.0 simply does not work properly. Here is what does not work:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;When the plugin is inserted as a content element, it does not appear on the page. The reason is that it does not add itself to TypoScript anymore (to tt_content.list.20). I had to investigate and add it manually.&lt;/li&gt;
&lt;li&gt;New page browser in tt_news does not replace certain markers out of the box. Why couldn't the developer simply use a pagebrowse extension instead of doing a complex thing himself?&lt;/li&gt;
&lt;li&gt;The formatting is changed too much.&lt;/li&gt;
&lt;/ul&gt;
You can tell me that TYPO3 4.4.9 and tt_news 2.5.0 is too old. Yes, that's true. You are absolutely right. But there is one important thing to know. I had no problems updating TYPO3 core or any other extension. However I had huge problems with tt_news. As usual.&lt;br /&gt;
People, when you write your code, remember a gold rule: the less problems people have with your creation, the more they will like it. Upgrade should be smooth. Behavior should be compatible!&lt;br /&gt;
I hate tt_news. (Georg, yes, I know about news2 but I am not ready to migrate to it. I am out of time.)&lt;br /&gt;
No productivity blog post for today because my productivity for today is out of order, thanks to tt_news.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-1590428282372846059?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/w71uKfi-vwM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/1590428282372846059/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/frustrated-by-ttnews-upgrade.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1590428282372846059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/1590428282372846059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/w71uKfi-vwM/frustrated-by-ttnews-upgrade.html" title="Frustrated by the tt_news upgrade" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><thr:total>8</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/frustrated-by-ttnews-upgrade.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ANQnczeyp7ImA9WhRRFEo.&quot;"><id>tag:blogger.com,1999:blog-3680269432729818126.post-6231780375587691641</id><published>2011-11-18T12:35:00.000+02:00</published><updated>2011-11-28T11:16:33.983+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T11:16:33.983+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Buzz" /><title>Future from Microsoft</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HB-8RLGOlms4hbfhhp67zshMNjc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HB-8RLGOlms4hbfhhp67zshMNjc/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/HB-8RLGOlms4hbfhhp67zshMNjc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HB-8RLGOlms4hbfhhp67zshMNjc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I came across a video, which is a Microsoft's version of the future. Here it is:&lt;br /&gt;
&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/a6cNdhOKwi0" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;
This is beautifully rendered video but... it is fully Microsoft video :) Microsoft is different from many other companies in the way that they never invented much. They worked on inventions of others. For example, almost everything in this vide is either multitouch, or iPad-like or a 3D monitor from a science fiction. Nothing of this is new, everything was seen in movies already (take "V", for example for interfaces).&lt;br /&gt;
The other thing that bothered me, is that Microsoft believes it is the future, while most of it is present. HUDs (head-up displays) are quite common. BWM has them in cars, there are even eyeglasses with HUDs now (you can read e-mail with them or see geographical pointers). Multitouch exists for years in all Apple products. Gestures without touching was recently patented, which means implementation is is the labs already. 3D holograms exist for years. You can read news with phones, which are getting very slim, donate, set appointments and send instructions. Nothing of that is new! So where is the future in this video?&lt;br /&gt;
The kitchen has the same microwave (which makes your products less healthy for you). It is all present, nothing is from the future.&lt;br /&gt;
Pumps? In future??? Nuh.&lt;br /&gt;
If Microsoft wanted to show more of the future, they would not look to pumps or luxury cars. They would show holographic meetings (like in "Resident Evil: Extinction"), all green energy, voice controlled equipment ("Hi, Siri!"), less traveling  and more time with family. That would the future.&lt;br /&gt;
But that's Microsoft: shiny outside, no new ideas inside.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3680269432729818126-6231780375587691641?l=www.dmitry-dulepov.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dmitry-dulepov/~4/ry9dEr4FHuc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.dmitry-dulepov.com/feeds/6231780375587691641/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.dmitry-dulepov.com/2011/11/future-from-microsoft.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6231780375587691641?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3680269432729818126/posts/default/6231780375587691641?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dmitry-dulepov/~3/ry9dEr4FHuc/future-from-microsoft.html" title="Future from Microsoft" /><author><name>Dmitry Dulepov</name><uri>http://www.blogger.com/profile/00090275219571853930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-rVM9Ytn13fE/TtNFFvYddDI/AAAAAAAAAQA/eqdjBGSU-8M/s220/5C3O8327.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/a6cNdhOKwi0/default.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://www.dmitry-dulepov.com/2011/11/future-from-microsoft.html</feedburner:origLink></entry></feed>

