<?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;DEcMRHs8cSp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-35511234</id><updated>2011-11-27T15:21:25.579-08:00</updated><category term="distributed" /><category term="javascript" /><category term="news" /><category term="cluster" /><category term="books" /><category term="ajax" /><category term="peopleware" /><category term="gwt" /><category term="maven" /><category term="monitoring" /><category term="gigaspaces" /><category term="data grid" /><category term="grid" /><category term="hyperic" /><category term="saratov" /><category term="spring" /><category term="search" /><category term="maintenance" /><category term="project management" /><category term="jee" /><category term="architecture" /><category term="open-source" /><category term="management" /><category term="vista" /><category term="system administration" /><title>Alexey Kharlamov</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://aharlamov.blogspot.com/" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>22</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/AlexeyKharlamov" /><feedburner:info uri="alexeykharlamov" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0ANQn04eSp7ImA9Wx9TFk8.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-6966159285308627700</id><published>2010-11-24T11:47:00.000-08:00</published><updated>2010-11-24T12:16:33.331-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-24T12:16:33.331-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="project management" /><category scheme="http://www.blogger.com/atom/ns#" term="peopleware" /><title>What if coffee houses were like software projects?</title><content type="html">Lately, I've decided to spent sometime on improvement of project management skills. I bought a book of "world level expert" in project management in a hope to find brilliant insights. But I lost my wish to read approximately on 10th page of first chapter. &lt;br /&gt;&lt;br /&gt;The author assumed management of software development project is the same as management of a coffee house. Literally. While the book has it value, I still can not funny pictures of coffee houses like software projects:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What if coffee houses were like software projects:&lt;/span&gt;&lt;br /&gt;- Each coffee shop employee has to learn her specialty for 14 years in school. After that he has to work at least 5 years before he starts to do it with acceptable quality.&lt;br /&gt;- You have to teach all your new employees to prepare coffee in your way before they start to bring value.&lt;br /&gt;- There shall be thousands of coffee types. And each your employee knows about 10, may be 20.  &lt;br /&gt;- Even veterans of coffee making were not able to tell you how long will it take to prepare this type of coffee. They even can not say whether it is possible at all!!!&lt;br /&gt;- 20-30% of time your guys in the kitchen have to spent on learning new ways of making coffee. Otherwise, they can end up on streets without chance to get job.&lt;br /&gt;- Usually, your clients come within groups of several dozens. Each of them has its own opinion about kind of coffee they all want to drink together.&lt;br /&gt;- Clients demand their order have to be done immediately, or in several seconds (see above) from the moment you heard "I want coffee".&lt;br /&gt;&lt;br /&gt;Now, do you really think it is completely the same thing?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-6966159285308627700?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/MdecR7dEb_U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/6966159285308627700/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=6966159285308627700" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/6966159285308627700?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/6966159285308627700?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/MdecR7dEb_U/what-if-coffee-houses-were-like.html" title="What if coffee houses were like software projects?" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2010/11/what-if-coffee-houses-were-like.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UCQns-cSp7ImA9WxNVFE0.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-4885184728957970448</id><published>2009-10-24T09:36:00.000-07:00</published><updated>2009-10-24T10:27:43.559-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-24T10:27:43.559-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="data grid" /><title>HighLoad++ 2009: IMDG Presentation</title><content type="html">On 12th of October I gave a presentation dedicated to concept of In-Memory Data Grids on russian conference dedicated to high load systems. My talk laid little aside interests of most participants, but it seemed to induce some interest. I even get an invitation to do the same talk for employees of Mail.ru corporation.&lt;br /&gt;&lt;br /&gt;PRESENTATION RUSSIAN ONLY&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_2336615"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/aih1013/highload-2009-inmemory-data-grids" title="HighLoad++ 2009 In-Memory Data Grids"&gt;HighLoad++ 2009 In-Memory Data Grids&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=highload2009-imdgpresentation-091024122117-phpapp02&amp;stripped_title=highload-2009-inmemory-data-grids" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=highload2009-imdgpresentation-091024122117-phpapp02&amp;stripped_title=highload-2009-inmemory-data-grids" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/aih1013"&gt;aih1013&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/35511234-4885184728957970448?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/1ZME3Mq8Gjk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/4885184728957970448/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=4885184728957970448" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/4885184728957970448?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/4885184728957970448?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/1ZME3Mq8Gjk/highload-2009-imdg-presentation.html" title="HighLoad++ 2009: IMDG Presentation" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2009/10/highload-2009-imdg-presentation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08MRHs9eCp7ImA9WxVXF0k.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-3932476657935095966</id><published>2009-02-15T18:01:00.000-08:00</published><updated>2009-02-15T18:04:45.560-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-15T18:04:45.560-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="peopleware" /><title>Wonderful analogy between programming &amp; sleeping</title><content type="html">Just found a great article about &lt;a href="http://alexthunder.livejournal.com/290612.html"&gt;Analogy between sleeping &amp; programming (russian only)&lt;/a&gt;. When stated, similarity becomes mostly obvious.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-3932476657935095966?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/QQ25XFqzLRo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/3932476657935095966/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=3932476657935095966" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/3932476657935095966?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/3932476657935095966?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/QQ25XFqzLRo/wonderful-analogy-between-programming.html" title="Wonderful analogy between programming &amp; sleeping" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2009/02/wonderful-analogy-between-programming.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDR3k6cSp7ImA9WxVXEU8.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-8868847768321542313</id><published>2009-02-04T21:57:00.000-08:00</published><updated>2009-02-08T11:31:16.719-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-08T11:31:16.719-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="data grid" /><title>Full-text &amp; faceted search over In-Memory-Data-Grid</title><content type="html">Modern in memory data-grid solutions provide different facilities for execution of queries over whole stored data set with different levels of sophistication . Coherence provides Query facilities (one time full scan &amp;amp; continuous quering with Cost-Based-Optimized). Gigaspaces has JDBC Query interface with ability to use hash &amp;amp; B-Tree indexes. The solutions work quite well for big part of problem areas. However for heavy loads &amp;amp; complex multi-createrias queries the facilities may become a bottleneck quickly.&lt;br /&gt;&lt;br /&gt;But there is a  class of workloads producing high query loads onto IMDGs. Item catalogs (in retailing companies for example) are hit by diverse stream of multi-createria queries.Typically query you see likes :&lt;br /&gt;&lt;br /&gt;give me cell phones with MP3 support, Java and in red color.&lt;br /&gt;&lt;br /&gt;Fortunately, Compass framework allows to do such queries effectively. It allows to builds inverse indexes with Apache Lucene and store them in a grid. The capability originates in very modular design of Lucene framework. All index IO operations hidden by abstraction of FileDirectory.&lt;br /&gt;&lt;br /&gt;For now Compass provides implementations for Coherence, GigaSpaces and Terracota introducing unprecedented ability to build a vertical search solution on top of In-Memory DataGrid.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_aTVQwIbMAHo/SY8yqV_ej-I/AAAAAAAAAk8/c-1ElxpXAqM/s1600-h/Compass+IMDG.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 142px;" src="http://1.bp.blogspot.com/_aTVQwIbMAHo/SY8yqV_ej-I/AAAAAAAAAk8/c-1ElxpXAqM/s320/Compass+IMDG.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5300510989477646306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Moreover, Compass has sophisticated object-to-document mapping system which allows to make stored objects searchable just by addition of Java annotations or XML mapping files. Also mapping can be built in runtime.&lt;br /&gt;&lt;br /&gt;However, inspite the great code, Composs has scarce documentation. It may take significant time to dive into the code and docs to get what you want. But results will overcome all your expectations. Search engines on top of data grids easily overcome any old-generation search technologies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-8868847768321542313?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/QRtxArnt3ts" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/8868847768321542313/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=8868847768321542313" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8868847768321542313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8868847768321542313?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/QRtxArnt3ts/full-text-faceted-search-over-in-memory.html" title="Full-text &amp; faceted search over In-Memory-Data-Grid" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_aTVQwIbMAHo/SY8yqV_ej-I/AAAAAAAAAk8/c-1ElxpXAqM/s72-c/Compass+IMDG.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2009/02/full-text-faceted-search-over-in-memory.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFSX87fCp7ImA9WxVQEEw.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-5779660852707401084</id><published>2009-01-18T06:11:00.000-08:00</published><updated>2009-01-26T15:58:38.104-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T15:58:38.104-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="books" /><title>Ship It Review</title><content type="html">Content of the book can be naturally divided into 3 parts:&lt;br /&gt;- Code of Software Developer&lt;br /&gt;- Advices about development tools and considerations&lt;br /&gt;- Trace Bullet Development&lt;br /&gt;I'll review each part independently.&lt;br /&gt;&lt;br /&gt;Part dedicated to relations in developers team and management is absolutely brilliant. It gives wonderful inside to team dynamics, main factors influencing changes and intrateam relations. And most importantly it provides solutions for common problems of day-to-day developer’s life. No doubt, the chapter will be interesting for both newbies and seasoned team leaders.&lt;br /&gt;&lt;br /&gt;Another part of the book is dedicated to development tools and processes. There is nothing novel here. In our days every developer knows Version Control System should present. And it would be better to have a continuous integration server if your team has more than 1 guy. So the part can be skipped if you have knowledge about modern development processes.&lt;br /&gt;&lt;br /&gt;And the last part is dedicated to so-called Trace Bullet Development (TBD) process. While the wording sounds cool, usefulness of the process is rather arguable. Don't get me wrong; described design process (yes, this is not a Development process, this is a Software Design Process) will work. Creation of vertical of functioning system components is a good starting point for any project. But TBD pushes it forward too much. Interfaces created early tend to be error-prone. And after the interfaces were designed, they tend to become unchangeable. So line by line they become monsters which have no connection with the original elegant idea.&lt;br /&gt;&lt;br /&gt;Concept of implementation of architecturally important user-stories or use-cases looks much better for me. Needless to say, as in any book there are several out-dated or even harmful advices. For example, "design all interfaces to be remote" . Such methodology used without appropriate care will make system too complex without real need.&lt;br /&gt;&lt;br /&gt;Anyway, the book worth reading. This is the best masterpiece I’ve read since "The One Minute Manager".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-5779660852707401084?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/zDnQRCbKZ1o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/5779660852707401084/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=5779660852707401084" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5779660852707401084?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5779660852707401084?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/zDnQRCbKZ1o/ship-it-review.html" title="Ship It Review" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2009/01/ship-it-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUERn07eSp7ImA9WxRaEUU.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-5845907918007717085</id><published>2008-12-13T06:50:00.000-08:00</published><updated>2008-12-13T06:56:47.301-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-13T06:56:47.301-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><title>New Tasks feature in gMail</title><content type="html">The new Tasks feature is gMail is awesome!!! I have waited for it so long. Now I can abandon all substitutes I had tried to use (without any success by the way).&lt;br /&gt;&lt;br /&gt;I use gmail as my single access point to work items. Separate tasks management systems was really unnatural for me. And now I can use gmail to do all stuff I need day by day.&lt;br /&gt;&lt;br /&gt;It is not very rich from feature set point of view, but usability is great as usual. Hopefully, additional features will appear soon. I'll be happy to have an external access to the task list and tabs for task list switching (google, do you hear me?).  :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-5845907918007717085?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/VxVPWVKJbOQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/5845907918007717085/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=5845907918007717085" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5845907918007717085?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5845907918007717085?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/VxVPWVKJbOQ/new-tasks-feature-in-gmail.html" title="New Tasks feature in gMail" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/12/new-tasks-feature-in-gmail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNQHg7fSp7ImA9WxVXF0k.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-5319453521699759552</id><published>2008-08-10T03:16:00.001-07:00</published><updated>2009-02-15T17:56:31.605-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-15T17:56:31.605-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="saratov" /><category scheme="http://www.blogger.com/atom/ns#" term="grid" /><title>No posts for a long time</title><content type="html">Lately, I did not write much. This is due my long summer holidays (I've visited Norway and Altai Mountains btw).&lt;br /&gt;&lt;br /&gt;Now I want to inform you about some news. I leave Enterra Inc and Barnaul tomorrow and move to Saratov to work for Grid Dynamics. Hopefully, I'll be able to get a stable internet connection soon. If so, I shall update my blog more frequently.&lt;br /&gt;&lt;br /&gt;I plan to share details of my life in Saratov and experience in grid systems building.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-5319453521699759552?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/cHbki0hk4iU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/5319453521699759552/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=5319453521699759552" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5319453521699759552?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5319453521699759552?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/cHbki0hk4iU/no-posts-for-long-time.html" title="No posts for a long time" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/08/no-posts-for-long-time.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQDSXk9eyp7ImA9WxZaGU0.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-401651170677470982</id><published>2008-05-04T04:58:00.001-07:00</published><updated>2008-05-04T04:59:38.763-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-04T04:59:38.763-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="gwt" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><title>GWT: Pros &amp; Cons</title><content type="html">&lt;span style="font-weight: bold;"&gt;Pros: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  Very good perceived UI responsiveness. In a perfect case response times will be even better than on desktop (local Google Gears caching is great).&lt;/li&gt;&lt;li&gt;GWT uses component model for UI, so code reuse is easy. And there are many open-source libraries of GWT components too. &lt;/li&gt;&lt;li&gt;GWT server-side is stateless. So it is highly scalable "by design". In our case we achieved very good performance per single front-end server instance. &lt;/li&gt;&lt;li&gt;You can make your UI similar to desktop GUI with associated sweeties (DND, visual effects &amp;amp; etc)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-weight: bold;"&gt;Cons: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; GWT is built around Java -&gt; JavaScript compilation. So if you get a big Java codebase, the result js files will be big. So some old browsers will not be able to load and run them&lt;/li&gt;&lt;li&gt;GWT app loading time may be quite significant for big codebase. Of course, browser caching helps here &lt;/li&gt;&lt;li&gt;GWT renders page content with JavaScript, so indexing of data represented by the app is problematic &lt;/li&gt;&lt;li&gt;While there is browser history control inside the library, there are restrictions introduced by HTTP/HTML stack. In general case, you will not be able to reference pages inside GWT app if you use HTTP redirect (for example during authentication) &lt;/li&gt;&lt;li&gt;HTML Browsers are not too good in visualization of dynamic HTML (IE is the worst, Safari 3 is the best). So you may need some tricks to show big number of items) &lt;/li&gt;&lt;li&gt;GWT components are not easy to debug/implement. They should be cross-browser. And HTML browsers have their own bugs too. So you may need a JS/DHTML guru in your Java team. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-401651170677470982?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/qdLezt9J3Po" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/401651170677470982/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=401651170677470982" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/401651170677470982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/401651170677470982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/qdLezt9J3Po/gwt-pros-cons.html" title="GWT: Pros &amp; Cons" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/05/gwt-pros-cons.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEHQ3w7fCp7ImA9WxZaGEU.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-681714376370279482</id><published>2008-05-03T23:57:00.001-07:00</published><updated>2008-05-04T00:53:52.204-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-04T00:53:52.204-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open-source" /><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><category scheme="http://www.blogger.com/atom/ns#" term="jee" /><title>SpringSource Application platform</title><content type="html">Lately, several Spring based platforms for application development has arisen. I guess this is a good thing. JEE is a quite rigid and restrictive for modern application development. There are areas were this is good. For example in conservative industries code may live for 10-15 years. So well described standardized platform is a must.&lt;br /&gt;&lt;br /&gt;But as I said it has drawback. This is why Spring is the leading framework for application development. It is like LEGO. The framework ties together many different components into a single system and provides unprecedented flexibility in architecture design. In the last two java projects of mine JEE container was just for checkbox. Mostly all functionality is controlled and managed by Spring.&lt;br /&gt;&lt;br /&gt;So &lt;a href="http://java.dzone.com/news/interview-rod-johnson-springso"&gt;introduction of the Application Platform&lt;/a&gt; by SpringSource is a GREAT EVENT for me! While the platform is on early stages of development yet, it tends to be a great tool!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;All components are physically modularized through OSGI. So version control and dependency resolution is inside container already. These things I was doing manually for ages.&lt;/li&gt;&lt;li&gt;Logging is fantastic! The platform separates event streams by originating application and allows to configure details level very precisely. The configuration language is much simpler and comfortable than Log4j XML. Moreover, serious app errors are detected and logged (deadlock &amp;amp; etc).&lt;/li&gt;&lt;li&gt;The platform provides native support for Spring contexts, modules linking through Spring DM. I am happy. :-))))&lt;/li&gt;&lt;/ul&gt;However, the platform is young still.  I did a quick review and got following wishes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The platform need a bundle distribution infrastructure. I want not put new bundles into all instances manually. Of course, I can automate this. But it would be better to have the feature inside the AP.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I'd like to have Tanuki software wrapper as native runner instead of custom made shell scripts. The wrapper is broadly used by community and it provides very good capabilities for OS integration (services, remote restart, watchdog &amp;amp; etc)&lt;/li&gt;&lt;/ul&gt;Anyway, this is a big step forward for server application development. You are on good course Spring!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-681714376370279482?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/6Vm6xOQxOBs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/681714376370279482/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=681714376370279482" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/681714376370279482?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/681714376370279482?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/6Vm6xOQxOBs/springsource-application-platform.html" title="SpringSource Application platform" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>3</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/05/springsource-application-platform.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IDRn84fCp7ImA9WxZbGEk.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-6486803745874582527</id><published>2008-04-21T23:08:00.000-07:00</published><updated>2008-04-22T00:32:57.134-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-22T00:32:57.134-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="monitoring" /><category scheme="http://www.blogger.com/atom/ns#" term="hyperic" /><title>Monitoring that matters</title><content type="html">I am using Hyperic HQ monitoring for more than a year now. And it becomes more and more obvious for me that an important aspect of monitoring is missed by popular solutions. Yes, it is important to know throughput of the system.&lt;br /&gt;&lt;br /&gt;But the metric that is really matters is CUSTOMERS EXPERIENCE.  And it usually derives for two things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Service responsiveness&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Error ratio&lt;/li&gt;&lt;/ul&gt;The problem is that these metrics are application level parameter. I mean there is no OS counter that can be easily obtained by software system. And both application and monitoring system developers should pay effort on integration. This is where HQ is good. It is really easy to create JMX bean and an XML plugin to gather application specific metrics.&lt;br /&gt;&lt;br /&gt;But there are area for improvement. I'd like to have:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Network level error statistics like number of missed IP packets&lt;/li&gt;&lt;li&gt;Exceptions in the log by type&lt;/li&gt;&lt;/ul&gt;Usually, errors rate gives more information about system health. But this type of metrics are successfully ignored at the moment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-6486803745874582527?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/0bH1ulmebFc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/6486803745874582527/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=6486803745874582527" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/6486803745874582527?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/6486803745874582527?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/0bH1ulmebFc/monitoring-that-matters.html" title="Monitoring that matters" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/04/monitoring-that-matters.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUNSHw_eCp7ImA9WxZUEU4.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-3190613183431177957</id><published>2008-04-02T03:28:00.000-07:00</published><updated>2008-04-02T03:31:39.240-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-02T03:31:39.240-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gigaspaces" /><category scheme="http://www.blogger.com/atom/ns#" term="open-source" /><category scheme="http://www.blogger.com/atom/ns#" term="hyperic" /><title>Gigaspaces monitoring with Hyperic</title><content type="html">A half-hour ago I've released the first public beta of the Gigaspaces monitoring plugin for Hyperic HQ. The plugin provides automatically discovers and monitors of GigaSpaces XAP 6.0 on physical and logical levels. More information from the project &lt;a href="http://www.openspaces.org/display/HGM/HGM"&gt;homepage&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-3190613183431177957?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/3Q2BuAICvsk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/3190613183431177957/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=3190613183431177957" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/3190613183431177957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/3190613183431177957?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/3Q2BuAICvsk/gigaspaces-monitoring-with-hyperic.html" title="Gigaspaces monitoring with Hyperic" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>3</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/04/gigaspaces-monitoring-with-hyperic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUGQ3g_fCp7ImA9WxZVF08.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-8004860526795260643</id><published>2008-03-28T09:11:00.000-07:00</published><updated>2008-03-28T09:37:02.644-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-28T09:37:02.644-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vista" /><title>Farewell, Vista</title><content type="html">Lately, I have purchased a laptop with pre-installed Vista Home Premium. My first impression was quite good. Wow, it is so nice and quick enough.&lt;br /&gt;&lt;br /&gt;But problems started to appear soon. I started to get "Not enough memory" errors from Eclipse. But wait, my development environment works fine on my desktop with 1.5GB RAM. Why does it fail on 2Gb with Vista?&lt;br /&gt;&lt;br /&gt;The answer is simple. Just after install my Vista allocated 860Mb of physical memory for background processes. So I took my tambourine and file those I had used for Linux a long time ago and fixed it. It had worked for me for sometime.&lt;br /&gt;&lt;br /&gt;As I've written already, I am working on a plugin for Hyperic which will allow monitor activity of GigaSpaces clusters. As I was waiting for availability of Ubuntu Hardy beta, I have written the code on my Vista laptop. It was a BIG ERROR.&lt;br /&gt;&lt;br /&gt;Hyperic auto-inventory just don't work on Vista. I spent several days of work tring to resolve a error which appears on Vista only. Yes, I am not sure this is Vista's fault. But I have seen several very weird bugs like that. So I will not use it for important things anymore.&lt;br /&gt;&lt;br /&gt;Farewell, Vista&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-8004860526795260643?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/E2Nh34Q633M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/8004860526795260643/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=8004860526795260643" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8004860526795260643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8004860526795260643?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/E2Nh34Q633M/farewell-vista.html" title="Farewell, Vista" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/03/farewell-vista.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMHRnY-fyp7ImA9WxZXGEQ.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-845453467247173839</id><published>2008-03-07T04:17:00.000-08:00</published><updated>2008-03-07T04:20:37.857-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-07T04:20:37.857-08:00</app:edited><title>GigaSpaces plugin for Hyperic</title><content type="html">I've just started an open-source project aimed to developer Hyperic plugin for GigaSpaces XAP monitoring and management. &lt;br /&gt;&lt;br /&gt;See details &lt;a href="http://www.openspaces.org/display/HGM/HGM"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-845453467247173839?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/uoazPxR6-z4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/845453467247173839/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=845453467247173839" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/845453467247173839?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/845453467247173839?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/uoazPxR6-z4/gigaspaces-plugin-for-hyperic.html" title="GigaSpaces plugin for Hyperic" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/03/gigaspaces-plugin-for-hyperic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQNRnwzeSp7ImA9WxZQFks.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-765479572129328082</id><published>2008-02-22T00:18:00.000-08:00</published><updated>2008-02-22T00:19:57.281-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T00:19:57.281-08:00</app:edited><title>Ya.ru service validation record!</title><content type="html">Hello!&lt;br /&gt;&lt;br /&gt;I have added the blog to ya.ru service. It requires ownership checking. So this post is just for the registration authorization.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;22267502.024530d1d30810ca053b429754354a41.1203668219.d3e85a9367d5a2e2633c951543c6ed76&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-765479572129328082?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/PQkyPw7BDHs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/765479572129328082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=765479572129328082" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/765479572129328082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/765479572129328082?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/PQkyPw7BDHs/yaru-service-validation-record.html" title="Ya.ru service validation record!" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/02/yaru-service-validation-record.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IHRHg7cCp7ImA9WxZRGEQ.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-4783802148371140824</id><published>2008-02-13T00:25:00.001-08:00</published><updated>2008-02-13T00:32:15.608-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-13T00:32:15.608-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="gwt" /><category scheme="http://www.blogger.com/atom/ns#" term="ajax" /><title>GWT: Improving performance</title><content type="html">Recently, we have published an &lt;a href="http://techzone.enterra-inc.com/?p=25"&gt;article about GWT performance problems and ways to resolve them&lt;/a&gt;. I think it will be an interested reading as for beginners as for seasoned GWT/AJAX hackers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-4783802148371140824?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/ok0xzngVVgE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/4783802148371140824/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=4783802148371140824" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/4783802148371140824?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/4783802148371140824?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/ok0xzngVVgE/gwt-improving-performance.html" title="GWT: Improving performance" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/02/gwt-improving-performance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QEQngzeCp7ImA9WxZRGUU.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-5901713010375961574</id><published>2008-01-31T04:42:00.000-08:00</published><updated>2008-02-14T01:28:23.680-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-14T01:28:23.680-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="management" /><category scheme="http://www.blogger.com/atom/ns#" term="maven" /><title>Maven: Do you use it? Still?</title><content type="html">Sometime ago Howard Lewis Ship has posted a &lt;a href="http://tapestryjava.blogspot.com/2007/11/maven-wont-get-fooled-again.html#c5662722834685570160"&gt;critique article&lt;/a&gt; about Maven builds. I am fully agree with him. I use Maven based build on one of my projects for 1.5 years now. It is a REAL PAIN. A year ago a was so disappointed by it that I had wanted to write a slashing article. But I've abstained. Now I see that my problems are not unique. So I want to add my 2 grams of lead mostly due the comments on the Howard's article.&lt;br /&gt;&lt;br /&gt;There are three things those make Maven an bad choice for build tool:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Lack of discipline in developers team&lt;/span&gt;&lt;br /&gt;Yes, I said it. All other problems are just consequences of this. There is no any release plans, configuration management and communication with customers.&lt;br /&gt;&lt;br /&gt;As result, you shall find yorself using SNAPSHOT versions of plugins so explicit version numbers will not work. You need to establish an own controlled repository.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Convention over configuration principle&lt;br /&gt;&lt;/span&gt;Yes, I am a heretic. I think conventions do not work good enough for large projects.  Just because you need account too many of them.&lt;br /&gt;&lt;br /&gt;Maven works good for simple projects, where artifact structure is planar. But it become a real mess to manage 3-4 level hierarchy of projects inside one build.&lt;br /&gt;&lt;br /&gt;Another bad thing with conventions is easy modification. The Maven dev team can do a small change, and your build will be broken. Actually, the change may even be a bugfix. But you are in trouble anyway. It may pass sometime before one of your team members install Maven with a  difference in patch level and the build will stop working for him.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Buggy implementation&lt;/span&gt;&lt;br /&gt;There is no any software without errors. This is like an axiom in our days. But in the Maven's case bugs are a real problem. Mostly because of lack of appropriate release policy. Some issues stay unresolved for years.&lt;br /&gt;&lt;br /&gt;Now, it is unrecommended practice to use Maven for builds inside my company. All new projects use Ivy together with internal Maven repository now. As I can see developers are much happier with it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-5901713010375961574?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/U4K0QKbfBKU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/5901713010375961574/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=5901713010375961574" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5901713010375961574?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5901713010375961574?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/U4K0QKbfBKU/maven-do-you-use-it-still.html" title="Maven: Do you use it? Still?" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2008/01/maven-do-you-use-it-still.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4HQH87cCp7ImA9WxZWFE0.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-2256915705115419657</id><published>2007-12-14T01:39:00.000-08:00</published><updated>2008-03-13T03:25:31.108-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-13T03:25:31.108-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gwt" /><category scheme="http://www.blogger.com/atom/ns#" term="management" /><title>Mines in the Field of GWT Development Planning</title><content type="html">&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;Recently, Google Web Toolkit attracted attention of web developers from all over the world. GWT is a great technology for &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;AJAX&lt;/st1:place&gt;&lt;/st1:city&gt; development actually. It helps to get rid of many head-aches associated with cross-browser development, user interaction and development cycle.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;      &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;&lt;o:p&gt;T&lt;/o:p&gt;he library provides unprecedented possibilities to build Web 2.0 applications with high levelof interactivity. And there is a trap.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;Often, the user interface of web-applications is simpler to build than desktop UIs due to two factors. First, the HTML/CSS ecosystem provides for a great number of tools to easily express designers vision. And there is no need to build/run/debug cycle for the web-pages. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;Second, HTML provides for a significantly lower level of interactivity that is encapsulated by browser. So developers don't need to debug each.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;Revolutionary &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;AJAX&lt;/st1:place&gt;&lt;/st1:city&gt; development GWT changes these factors also. GWT apps can be highly interactive and they are component based. So the initial expectation about easy change of web applications’ look'n'feel is not completely true anymore. Now, if you want to change it in the visual design this may require a significant effort. Moreover, as we now use components visual design is limited by available set of controls. A little spicy text edit field invited by a web-designer may create a real mess for the dev team. Isn't it like in the good old times of the desktop application UI?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;So GWT development requires very tight cooperation of the design and development teams. Keep these guys in one place, preferably in a room with closed doors and a small window to serve food.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;Another feature of a GWT application is interactivity. Yes, this is a great feature and a great head-ache. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;As I have said before, web 1.0 applications rarely provide an interactive response on the user's actions. So the first move of web designers is to provide static mockups of the UI. This does not work here. Developers need a specified behavior of the application. And the behavior is a part of the code. That is not an easy thing to change. So you need to have enough reserved resources to debug and tweak the UI.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="EN-US" &gt;So let me say this again. Keep your developers and interface designers as close as possible. May be this is why Google apps (gmail, reader and others) so well thought. Usability the team works very closely with developers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-2256915705115419657?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/eSc2TosVXb4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/2256915705115419657/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=2256915705115419657" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/2256915705115419657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/2256915705115419657?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/eSc2TosVXb4/mines-in-field-of-gwt-development.html" title="Mines in the Field of GWT Development Planning" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2007/12/mines-in-field-of-gwt-development.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8GRn44eyp7ImA9WB9UFk8.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-5666091921633638648</id><published>2007-12-12T01:34:00.000-08:00</published><updated>2007-12-14T01:33:47.033-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T01:33:47.033-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="system administration" /><category scheme="http://www.blogger.com/atom/ns#" term="cluster" /><category scheme="http://www.blogger.com/atom/ns#" term="maintenance" /><category scheme="http://www.blogger.com/atom/ns#" term="distributed" /><title>Production system maintenance. Part 2</title><content type="html">In the previous post I've described several organizational moment of the production system update. Now it is time for technical tips and tricks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Name code equally on all system nodes&lt;/span&gt;&lt;br /&gt;Usually, this is a good idea to name all things equally across systems you manage. It can be a real problem to have jboss4, jboss4.0.5 and jboss as names of the same piece of code on you cluster nodes. Use single and simple convention for code naming and placement.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Name resources differently&lt;/span&gt;&lt;br /&gt;While single naming schema for code lowers amount of time spent on unproductive things, resource naming is much different. In mature environment code can be easily restored from several places like developer machines, continuous integration, staging servers, source repository &amp;amp; etc. Resources (i.e. data) are different. Information and schema of your database might be unique on some moments. Moreover, the data may represent great value for your company.&lt;br /&gt;&lt;br /&gt;So damage to data should be avoided by any means. As the first line of defence name your databases differently depending on type of environment (production, testing, development &amp;amp; etc), contents and schema version. I usually use following db identifiers:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;contents descriptor=""&gt;   contents-&lt;yyyymmdd of="" last="" schema="" update=""&gt;timestamp_of_last_schema_update-database_type&lt;environment type=""&gt;&lt;/environment&gt;&lt;/yyyymmdd&gt;&lt;/contents&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For example: &lt;span style="font-style: italic;"&gt;chirp-20071210-prod&lt;/span&gt; While looks quite complex, the given notation may protect you from actions done on a wrong data by mistake. Unfortunately, "Oh God, I've dropped wrong database" problem is not so rare I was expected firstly. ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Use consistent hostnames&lt;br /&gt;&lt;/span&gt;Correctly set hostname is not an absolute requirement for server functioning. But right names may give you some help during exploitation. It is funny to have server called 'snoopy', if you have 3 total. When you have more, their names should be little more transparent and linked with their properties as the hosting data center and ip address.&lt;br /&gt;&lt;br /&gt;Also server software need to know name of the server it runs on. That is why hostname and dns name must be the same.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Highlight your current context&lt;/span&gt; Most maintenance errors I have seen were "right command with in a wrong context". For example, I have dropped production db while were thinking it was staging environment. (This is why I make backup of all data on the production server before update now).&lt;br /&gt;&lt;br /&gt;So put information about your current host, database, directory everywhere.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Put hostname, username and directory must present in the command line prompt.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Put hostname into the xterm title.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Put hostname and database name into mysql client prompt.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And be attentive.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Don't work as root&lt;/span&gt;&lt;br /&gt;Actually, this is impossible. Just try to work as superuser as less as possible. root or Administrator can do many dangerous things. You know, one error and your root filesystem is empty. ;-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Have a remotely controlled power switch&lt;/span&gt;&lt;br /&gt;This is actually is not required for VPS. However, this may be essential for&lt;br /&gt;dedicated servers. It is not a so rare task for system administrator to configure network remotely. And this may be very very very inconvenient to have a node with improperly configured network which can be managed by ssh only.&lt;br /&gt;&lt;br /&gt;Yes, data center support team may press "Power" for you. But only if you pay for 24x7 support.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Use cluster management software&lt;/span&gt;&lt;br /&gt;Not long ago, Debian package of the day published an article &lt;a href="http://debaday.debian.net/2007/12/09/clusterssh-control-serveral-ssh-sessions-via-a-single-interface/"&gt;about ClusherSSH&lt;/a&gt; which I found very useful. There are several &lt;a href="http://tentakel.biskalar.de/similar/"&gt;similar programs&lt;/a&gt; also. While relatively simple, these programs may easy your life and decrease number of errors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-5666091921633638648?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/ECwRFfeSDNg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/5666091921633638648/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=5666091921633638648" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5666091921633638648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/5666091921633638648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/ECwRFfeSDNg/production-system-maintenance-tips_12.html" title="Production system maintenance. Part 2" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2007/12/production-system-maintenance-tips_12.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8ARHY4eSp7ImA9WB9UFk8.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-4723397179068398243</id><published>2007-12-12T01:05:00.000-08:00</published><updated>2007-12-14T01:34:05.831-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T01:34:05.831-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="maintenance" /><category scheme="http://www.blogger.com/atom/ns#" term="distributed" /><title>Production system maintenance</title><content type="html">Lately, I've spent around 5 hours recovering production system from failure caused by improper actions of engineering staff during update procedure. I was lucky, so it was not me who has pressed the red button. But after that emergency situation I was trying to analysis causes of the problem and establish a better deployment process for software update. So these are thoughts somebody may found interesting:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Keep people without relevant experience out during important updates&lt;/span&gt;&lt;br /&gt;Yes, some are pretty cool in development and they may be very attentive. But production system update require engineer to be a little paranoid. If you have not bad experience in this area, you probably will be unable to predict side-effect and bad-thing-that-might-happen. In ideal case the update must be done by a pair of engineers. Human-factor will be depressed much in that case.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Have a detailed update plan&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Well, if the first thing is not the case... Prepare a detailed update plan with all things (shell commands, file &amp;amp; database operation &amp;amp; etc) included. It would be wonderful if you test it in your staging environment first. In ideal case you must have an auto-install package (deb, rpm or what ever).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Have a detailed fallback plan&lt;/span&gt;&lt;br /&gt;This is continuation of the previous thought actually. Your update plan should include graceful fall back procedure description. Some errors appear on production system only. Or your development team might miss something, or &lt;add&gt;. So you must have a way to return to previous version. Always.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Have a Plan B&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;In some cases fall back scenario can not help. For example in case of improper execution of update script. For example, if somebody deleted important files or dropped wrong database. Yes, your update script contains backup step. But what if that step failed silently?&lt;br /&gt;General rule is "wait for trouble, always".  So regular backup of production is a &lt;span style="font-weight: bold;"&gt;must have thing.&lt;/span&gt; Some data centers (as ours) even provides daily server backups in default service package.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/add&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-4723397179068398243?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/wZG2CoCOP08" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/4723397179068398243/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=4723397179068398243" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/4723397179068398243?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/4723397179068398243?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/wZG2CoCOP08/production-system-maintenance-tips.html" title="Production system maintenance" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2007/12/production-system-maintenance-tips.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYGQno_fCp7ImA9WB9WEU8.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-8792725625874290040</id><published>2007-11-14T04:38:00.000-08:00</published><updated>2007-11-15T04:02:03.444-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-15T04:02:03.444-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="distributed" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><title>Are synchronous systems doomed?</title><content type="html">Asynchronism of communication is a basic principle of many distributed systems. Did you ever think why? Why developers do so much staff to handle things asynchronously while sync communications are much simpler?&lt;br /&gt;&lt;br /&gt;If you'll see around you shall find many examples of asynchronism. Most organizations exploit this principles, engineers exploit this principle, even nature&lt;br /&gt;has built neural systems asynchronous.&lt;br /&gt;&lt;br /&gt;So why? The point is implicit parallelism and reliability introduced by such systems.&lt;br /&gt;&lt;br /&gt;Let's imagine a chain of components used by each other and connected by relatively long "links". By "relatively long" I mean information propagation time can be compared with processing time or longer. In synchronous systems the first component in the chain will wait at least while other component shall receive the message. In worst case it will wait for results  of the message processing. So transmission delays  will sum   and increase the first component idle time.&lt;br /&gt;&lt;br /&gt;Link failure in that case is a disaster. The only general way to detect it is timeout which increases request handling time (read the fist component idle time). Moreover, there is no way to learn was the request processed or not.&lt;br /&gt;&lt;br /&gt;Obviously, synchronous requests are hard to persist. As recovery of distributed state (which in synchronous system is usually represented by execution stack or system components) represents magnificent technical and administrative challenge.&lt;br /&gt;&lt;br /&gt;Asynchronous systems are something different. Components work in 'fire-and-forget' mode. So no time (resources) is spent to conserve. Components do not idle and may create additional requests, process data &amp;amp; etc. So it is much more parallel.&lt;br /&gt;&lt;br /&gt;Moreover, it is easy to design system in a way when all state is incapsulated inside the messages. Persisting them system may archive significant firmness for link/components failures.&lt;br /&gt;&lt;br /&gt;Now take a look onto modern hardware design. In common computer (actually in supercomputers also, but there can be exceptions) CPUs are quicker than  communication channels. This has little common with multicomponent architecture. But the trend is not to increase number of CPUs linked with _communication channels_ either on single computer level and on distributed cluster level.&lt;br /&gt;&lt;br /&gt;eBay is building their systems in async way. The most part of payment transactions are processed in async way.&lt;br /&gt;&lt;br /&gt;Don't you think it is time to learn message passing libraries and designs?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-8792725625874290040?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/c9kNlR189wQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/8792725625874290040/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=8792725625874290040" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8792725625874290040?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8792725625874290040?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/c9kNlR189wQ/is-synchronous-systems-doomed.html" title="Are synchronous systems doomed?" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2007/11/is-synchronous-systems-doomed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4GQ38yeip7ImA9WB9QE00.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-2130978437227418032</id><published>2007-10-25T02:06:00.000-07:00</published><updated>2007-10-25T02:18:42.192-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-25T02:18:42.192-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="management" /><title>A perfect wiki</title><content type="html">We are using wiki as a knowledge storage on one of the project. While it has many good collaborative features, there are some inconveniences in it.&lt;br /&gt;&lt;br /&gt;First of all, it is hard to write rich formatted documents or documents with complex structure. So I my requirements for wiki is all about that.&lt;br /&gt;&lt;br /&gt;1. The wiki should provide view representing hierarchy of pages&lt;br /&gt;2. Import/Export to ODF or another word processor format is must have.&lt;br /&gt;3. Easy table editing&lt;br /&gt;4. Wiki must send daily changes summary by email&lt;br /&gt;5. All arbitrary wiki staff like styles and etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-2130978437227418032?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/OL6tlkIkpDg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/2130978437227418032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=2130978437227418032" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/2130978437227418032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/2130978437227418032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/OL6tlkIkpDg/perfect-wiki.html" title="A perfect wiki" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2007/10/perfect-wiki.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IBRn46fSp7ImA9WB9UFEg.&quot;"><id>tag:blogger.com,1999:blog-35511234.post-8760932286197163596</id><published>2007-09-07T00:41:00.000-07:00</published><updated>2007-12-12T03:39:17.015-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-12T03:39:17.015-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cluster" /><category scheme="http://www.blogger.com/atom/ns#" term="distributed" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><title>Things you'd like to avoid during system design</title><content type="html">Lately, I've been working on a geographically distributed clustered web system and got several ideas I would like to share. All of them are written by blood, sweat and pieces of lost  dollars.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Don't rely on stability&lt;br /&gt;&lt;/span&gt;"Yes, this is obvious" - you may say. But I was knowing this from start the project also. However during deployment and preproduction testing the life has shown many new tricks to me.  Building network system all conscious developers will introduce some retries/recovery routines. However, absence of components stability has many implicit consequences.&lt;br /&gt;&lt;br /&gt;For example, let's say we have a server on 100Mbit/s channel connection which is enough to serve 50 concurrent jobs. So you are setting up the system to run 50 jobs and go to relax a little. A day after data center company narrows your channel down to 10Mbit/s due the maintenance. Viola! Your servers start dying.&lt;br /&gt;&lt;br /&gt;Or another example (this design problem incorporated into network libraries I use):&lt;br /&gt;Let's say you have a network service registry which is used by cluster members to discover addresses of needed services. Everything works well except that all nodes participating in the cluster check connectivity and availability of each other and authorized to delete record about dead servers.  But we are in the real world, you know.&lt;br /&gt;&lt;br /&gt;Let's say we have 4 servers: A, B, C, D. Now node D tries to ping node A and fails. What will it do? It will kill A's record in the node registry. BUT ping failure does not mean A is dead. It means D can not connect with A. Other nodes (B, C)  may work with A without a problem still. Now, when D has deleted A's service record ALL nodes will fail to talk with it! And the only error was  to suppose A-D link has the same properties as A-B and A-C links.&lt;br /&gt;&lt;br /&gt;So be aware. Don't make any assumptions on stability and properties. It would be better to make the system adaptive.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Don't rely on DNS system&lt;br /&gt;&lt;/span&gt;Actually this is a derivative from the previous advice. DNS system was designed a long ago and its problems are well know. In most cases dns servers work over UDP that is not reliable. Even if nobody will DOS attack your dns, it may become source of failures due looses in UDP packets and so on.&lt;br /&gt;&lt;br /&gt;But the most important source of risk is distributed nature of DNS. In most cases it does not under your full control. There are TLD server, DataCenter DNS server, servers of domain registrator and so on. When problems occur you may t spent days talking with system administrators and trying to find what is going on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35511234-8760932286197163596?l=aharlamov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexeyKharlamov/~4/SKeQoy0-f0o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://aharlamov.blogspot.com/feeds/8760932286197163596/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35511234&amp;postID=8760932286197163596" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8760932286197163596?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35511234/posts/default/8760932286197163596?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexeyKharlamov/~3/SKeQoy0-f0o/things-you-would-like-to-avoid-during.html" title="Things you'd like to avoid during system design" /><author><name>Gurney</name><uri>http://www.blogger.com/profile/09326323020559522679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://3.bp.blogspot.com/_aTVQwIbMAHo/SuM8EpOjqaI/AAAAAAAAAxk/t-XU7_tl25Y/S220/IMG_4068.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://aharlamov.blogspot.com/2007/09/things-you-would-like-to-avoid-during.html</feedburner:origLink></entry></feed>

